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

问题描述 投票:3回答:4

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

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

最大值是2

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

python dictionary max
4个回答
6
投票

您可以将dict项目输入到内置功能的max中。

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

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

编辑:

或者,也许有点光滑:

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

1
投票

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

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

1
投票

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

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

我会做这样的事情:

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)

应该这样做。

EDIT

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


0
投票

这是一个示例示例:

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语句。

© www.soinside.com 2019 - 2024. All rights reserved.