#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. Ты прав.