Как получить максимальное значение словаря вместе с соответствующими ключами?
my_dict = {1: 4, 2: 5, 3: 2, 4: 5, 5: 3}
maxValue = []
maximum = 0
for key, value in my_dict.items():
if value >= maximum:
maxValue.append(value)
number = max(maxValue)
print(number)
Мне удалось получить только максимальное значение, и результат равен 5, что ожидается, однако я не могу также получить ключи, которым соответствуют максимальные значения. В этом случае соответствующие ключи должны быть 2 и 4.






Вы можете создать список списков ключей, проиндексированных значениями в my_dict, чтобы вы могли сопоставить максимальное значение с соответствующим списком ключей:
d = {}
for k, v in my_dict.items():
d.setdefault(v, []).append(k)
print(d[max(d)])
Это выводит:
[2, 4]
Вы можете использовать operator.itemgetter для этого:
import operator
my_dict = {1: 4, 2: 5, 3: 2, 4: 5, 5: 3}
key_max = max(my_dict.items(), key=operator.itemgetter(1))[0]
key_min = min(my_dict.items(), key=operator.itemgetter(1))[0]
print key_max, key_min
вывод
2 3
Вы можете попробовать это,
my_dict = {1: 4, 2: 5, 3: 2, 4: 5, 5: 3}
max_number=max(my_dict.values())
d=dict((key,value) for key, value in my_dict.items() if value == max_number)
print(d)
Это будет выводиться как:
{2: 5, 4: 5}
И если вы хотите получить только ключи, вы можете сделать-
l=list(key for key, value in my_dict.items() if value == max_number)
print(l)
Это даст как-
[2, 4]
Надеюсь, это помогло!
Вы должны быть в состоянии получить это так:
my_dict = {1: 4, 2: 5, 3: 2, 4: 5, 5: 3}
maxValue = -1
maxValueIndex = -1
for key, value in my_dict.items():
if value >= maxValue:
maxValue = value
maxValueIndex = key
number = my_dict[key]
print(number)
Вы можете использовать Counter:
from collections import Counter
my_dict = {1: 4, 2: 5, 3: 2, 4: 5, 5: 3}
c = Counter(my_dict)
c.most_common(2)
# [(2, 5), (4, 5)]
[i for i, _ in c.most_common(2)]
# [2, 4]
Для этого вам понадобится 2 списка.