如何在字典中获取多个最大键值?

时间:2017-12-18 03:23:34

标签: python python-2.7

我们说我有一本字典:

data = {'a':1, 'b':2, 'c': 3, 'd': 3}

我想获得字典中的最大值。到目前为止,我一直在做:

max(zip(data.values(), data.keys()))[1]

但我知道我可能会错过另一个最大值。什么是最有效的方法来解决这个问题?

3 个答案:

答案 0 :(得分:4)

You could also try something like this:

from collections import defaultdict

data = {'a':1, 'b':2, 'c': 3, 'd': 3}

d = defaultdict(list)
for key, value in data.items():
    d[value].append(key)

print(max(d.values()))

Which Outputs:

['c', 'd']

答案 1 :(得分:3)

根据您的示例,您似乎正在寻找映射到最大值的键。您可以使用列表理解:

[k for k, v in data.items() if v == max(data.values())]
# ['c', 'd']

如果您有一个大词典,请将其分成两行,以避免计算出与您一样多的项目的最大值:

mx = max(data.values())
[k for k, v in data.items() if v == mx]

在Python 2.x中,您需要.iteritems()

答案 2 :(得分:0)

首先,找出字典中出现的最大值。如果您尝试创建所有最大值的列表,请尝试以下操作:

    data = {'a':1, 'b':2, 'c': 3, 'd': 3}
    max_value = data.get(max(data))
    list_num_max_value = []
    for letter in data:
      if data.get(letter) == max_value:
        list_num_max_value.append(max_value)
    print (list_num_max_value)

如果这不是您想要做的事情,请告诉我。我将指导您完成正确的流程。