繁体   English   中英

在重复值的情况下,查找字典中最大键的最大值的键

[英]Find the key of maximum values of maximum key in a dictionary in case of duplicates of values

在Python中我想找到具有重复项的字典中的最大值,例如:

my_dict = {1: 0, 12: 2, 36: 2, 24: 2, 33: 2, 4: 1}

最大值为2

我想在这个例子中找到最大值的最大值36:2

您可以将dict的项目输入max builtin函数。

>>> max(my_dict.items(), key=lambda t: (t[1], t[0]))
(36, 2)

键函数指定应首先考虑值(项的第二个元素)。 如果在比较两个(键,值)对期间值相同,则检查键(项的第一个元素)。

编辑:

或者,也许有点光滑:

>>> max(my_dict.items(), key=lambda t: t[::-1])
(36, 2)

您可以使用自定义顺序在字典的项目上调用max ,该顺序首先取值,然后取第二个键:

max(my_dict.items(), key=lambda i : (i[1], i[0]))

假设你的所有键都是正整数。

那么这个问题的复杂性是双重的,首先我们需要找到最大值,然后我们可以将它与最大值配对。

我会做这样的事情:

max_key = -1
max_val = -1
for key, val in my_dict.items():
    if int(val) >= max_val:
        max_val = int(val)
        if int(key) > max_key:
            max_key = int(key)
 print("Max value: {}\nMax key: {}".format(max_val, max_key)

应该这样做。

编辑

使用内置函数max可能效果更好,这段代码基本上复制了max或多或少做的事情。

这是一个示例示例:

my_dict = {1: 0, 12: 2, 36: 2, 24: 2, 33: 2, 4: 1}
maxValue = []
maximum = 0
maxKey = 0
maxKeys = []

for key, value in my_dict.items():
     if value >= maximum:
          maxValue.append(value)


number = max(maxValue)

for key, value in my_dict.items():
    if key > maxKey:
         maxKeys.append(key)

number_1 = max(maxKeys)

print('{}: {}'.format(number_1, number))

这是你的输出:

36: 2

我们基本上可以迭代每个值和每个键,并将它们添加到列表中并找到最大值。 然后我们可以使用将打印结果的.format()方法创建一个print语句。

暂无
暂无

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

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