Получение максимального значения для каждого ключа в словаре python

avatar
noobatexcel
1 июля 2021 в 15:40
67
2
0

У меня есть следующий словарь, и я хочу вывести максимальное значение для каждого ключа:

yo = {'is': [1, 3, 4, 8, 10],
             'at': [3, 10, 15, 7, 9],
             'test': [5, 3, 7, 8, 1],
             'this': [2, 3, 5, 6, 11]}

Например, вывод должен выглядеть примерно так

[10, 15, 8, 11]
or 
['is' 10, 'at' 15, 'test' 8, 'this' 11]
Источник

Ответы (2)

avatar
Nk03
1 июля 2021 в 15:42
7

Использовать list comprehension:

result = [max(v) for k,v in yo.items()]
# PRINTS [10, 15, 8, 11]

ИЛИ dict comprehension:

result_dict = {k:max(v) for k,v in yo.items()}
# Prints {'is': 10, 'at': 15, 'test': 8, 'this': 11}
noobatexcel
1 июля 2021 в 15:43
2

Огромное спасибо!

avatar
Deadpool
5 июля 2021 в 04:17
0

В случае, если dict имеет пустой список для любого ключа, вы можете выполнить безопасную проверку длины при сжатии dict, чтобы исключить пару

result = [max(v) for v in yo.values() if len(v)>0]
result_dict = {k:max(v) for k,v in yo.items() if len(v)>0}