我有一个字典,其中键是字符串,值是整数。
stats = {'a': 1, 'b': 3000, 'c': 0}
如何获得具有最大值的键?在这种情况下,它是'b'。
有没有比使用带有反向键值元组的中间列表更好的方法?
inverse = [(value, key) for key, value in stats.items()]
print(max(inverse)[1])
我有一个字典,其中键是字符串,值是整数。
stats = {'a': 1, 'b': 3000, 'c': 0}
如何获得具有最大值的键?在这种情况下,它是'b'。
有没有比使用带有反向键值元组的中间列表更好的方法?
inverse = [(value, key) for key, value in stats.items()]
print(max(inverse)[1])
当前回答
如果有一个以上的元素,我的值是最大的。我会列出所有值为最大值的键。
>>> stats = {'a':1000, 'b':3000, 'c': 100, 'd':3000}
>>> [key for m in [max(stats.values())] for key,val in stats.iteritems() if val == m]
['b', 'd']
这将给你'b'和任何其他最大键。
注意:对于python 3使用stats.items()而不是stats.iteritems()
其他回答
max(stats, key=stats.get)
在这种情况下,你有多个具有相同值的键,例如:
stats = {'a':1000, 'b':3000, 'c': 100, 'd':3000, 'e':3000}
你可以得到一个包含所有最大值键的集合,如下所示:
from collections import defaultdict
from collections import OrderedDict
groupedByValue = defaultdict(list)
for key, value in sorted(stats.items()):
groupedByValue[value].append(key)
# {1000: ['a'], 3000: ['b', 'd', 'e'], 100: ['c']}
groupedByValue[max(groupedByValue)]
# ['b', 'd', 'e']
Max ((value, key) for key, value in stats.items())[1]
试试这个:
sorted(dict_name, key=dict_name.__getitem__, reverse=True)[0]
这是另一个:
stats = {'a':1000, 'b':3000, 'c': 100}
max(stats.iterkeys(), key=lambda k: stats[k])
函数键只是返回应该用于排序的值,max()立即返回所需的元素。