我正在使用Python的max函数在名为count
的字典中查找最大整数和相应的键(不太确定我说的是否正确;我的代码可能解释得比我解释的更好)。字典count
类似于{'a': 100, 'b': 210}
,依此类推。
number = count[max(count.items(), key=operator.itemgetter(1))[0]]
highest = max(count, key=count.get)
如果其中有两个相等的最大值,我该怎么办?如果我有{'a': 120, 'b': 120, 'c': 100}
,它只能找到a
和b
中的第一个,而不是两个都找到。
发布于 2012-03-25 00:30:14
想法是找到最大值,并获得与该值对应的所有键:
count = {'a': 120, 'b': 120, 'c': 100}
highest = max(count.values())
print([k for k, v in count.items() if v == highest])
发布于 2012-03-25 01:17:52
与星号的想法相同,但不需要对列表进行两次迭代。更冗长一点。
count = { 'a': 120, 'b': 120, 'c': 100 }
answers = []
highest = -1
def f(x):
global highest, answers
if count[x] > highest:
highest = count[x]
answers = [x]
elif count[x] == highest:
answers.append(x)
map(f, count.keys())
print answers
发布于 2012-03-25 00:57:23
快速单次通过:
a = { 'a': 120, 'b': 120, 'c': 100 }
z = [0]
while a:
key, value = a.popitem()
if value > z[0]:
z = [value,[key]]
elif value == z[0]:
z[1].append(key)
print z
#output:
[120, ['a', 'b']]
和一种有趣的defaultdict方式
import collections
b = collections.defaultdict(list)
for key, value in a.iteritems():
b[value].append(key)
print max(b.items())
#output:
(120, ['a', 'b'])
https://stackoverflow.com/questions/9853302
复制相似问题