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

时间:2018-09-08 21:05:46

标签: python dictionary max

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

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

,最大值为2

在此示例中,我想找到最大值为36:2的最大键。

4 个答案:

答案 0 :(得分:6)

您可以将字典的项目输入到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 :(得分:1)

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

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

答案 2 :(得分: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)

应该这样做。

编辑

使用内置函数max可能会更好地工作,此代码基本上可以复制max或多或少执行的操作。

答案 3 :(得分: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()方法制作一条打印语句,以打印结果。