繁体   English   中英

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

[英]How to get multiple max key values in a dictionary?

假设我有一本字典:

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

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

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

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

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

[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()

您可以尝试在defaultdict收集反向value -> key对,然后输出具有最高键的值:

from collections import defaultdict

def get_max_value(data):
    d = defaultdict(list)
    for key, value in data.items():
        d[value].append(key)
    return max(d.items())[1]

哪些输出:

>>> get_max_value({'a':1, 'b':2, 'c': 3, 'd': 3})
['c', 'd']
>>> get_max_value({'a': 10, 'b': 10, 'c': 4, 'd': 5})
['a', 'b']

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

    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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM