Python, нахождение самого большого элемента в словаре

#python

Вопрос:

Вот словарь.Мне нужно вернуть список ключей/ключей с наибольшим значением.

 input1 = {('AVFD', 'SDFS'): 1, ('ADFSC', 'SDFSA') : 2, ('SDFSA', 'XCVBX'): 1,  ('JFGHD', 'REWTY'): 2, ('FDGSJ', 'JKJHGHDJ'): 2}  input2 = {('AVFD', 'SDFS'): 1, ('ADFSC', 'SdSfsA') : 3, ('SDFSA', 'XCVBX'): 1,  ('JFGHD', 'REWTY'): 2, ('FDGSJ', 'JKJHGHDJ'): 5}  

Я запутался в том, как найти ключ с наибольшей ценностью. Но в случае, если существует более 1 вхождения самого большого значения, чем все ключи, которые ссылаются на это значение, должны быть в списке.

Результат должен выглядеть следующим образом

 output = {('ADFSC', 'SDFSA'), ('JFGHD', 'REWTY'), ('FDGSJ', 'JKJHGHDJ')} output2 = {('FDGSJ', 'JKJHGHDJ')}  

Комментарии:

1. Вы упоминаете список в тексте, но в качестве примера выводите набор.

2. В любом случае, вы можете легко вычислить max(input1.values()) и просто нужно создать список (или установить как предпочтительный) ключей, где он равен следующему: [k for k,v in input1.items() if v==maxval] (при условии, что вы сохранили максимальное значение maxval )

Ответ №1:

Поскольку вам также нужны дубликаты, вы можете получить наибольшее значение и выполнить простое понимание списка:

 output = [i for i,j in input1.items() if j == max(input1.values())]  

Редактировать:

Как сказал @alani в комментариях, это вычисляет max каждую итерацию, поэтому сохраните ее как внешнюю переменную:

 big = max(input1.values()) output = [i for i,j in input1.items() if j == big]  

Комментарии:

1. Я думаю, что это позволит рассчитать максимальное значение на каждой итерации понимания вашего списка. Сначала сохраните его в переменной.

2. Ты прав.