我有一个字典,其中键是字符串,值是整数。
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])
当前回答
Max ((value, key) for key, value in stats.items())[1]
其他回答
Counter = 0
for word in stats.keys():
if stats[word]> counter:
Counter = stats [word]
print Counter
在这种情况下,你有多个具有相同值的键,例如:
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总是选择第一个具有Max值的键。字典可以有多个具有该值的键。
def keys_with_top_values(my_dict):
return [key for (key, value) in my_dict.items() if value == max(my_dict.values())]
把这个答案贴出来,希望能帮助到别人。 请看下面的SO帖子
在平局的情况下,Python会选择哪个最大值?
d = {'A': 4,'B':10}
min_v = min(zip(d.values(), d.keys()))
# min_v is (4,'A')
max_v = max(zip(d.values(), d.keys()))
# max_v is (10,'B')
只是添加一个你想要选择某些键而不是所有键的情况:
stats = {'a':1000, 'b':3000, 'c': 100, 'd':3000, 'e':3000}
keys_to_search = ["a", "b", "c"]
max([k for k in keys_to_search], key=lambda x: stats[x])```