在Python中,我想从字典中找到具有重复项的最大值,例如:
my_dict = {1: 0, 12: 2, 36: 2, 24: 2, 33: 2, 4: 1}
,最大值为2
。
在此示例中,我想找到最大值为36:2
的最大键。
答案 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()方法制作一条打印语句,以打印结果。