在Python中我想找到具有重复项的字典中的最大值,例如:
my_dict = {1: 0, 12: 2, 36: 2, 24: 2, 33: 2, 4: 1}
最大值是2
。
我想在这个例子中找到最大值的最大值36:2
。
您可以将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)
您可以使用自定义顺序在字典的项目上调用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语句。