#python #dictionary #max
#python #словарь #макс
Вопрос:
Допустим, у меня есть словарь с максимальными и минимальными температурами каждого месяца:
t = {
'jan': {
'max': 21,
'min': 12
},
'feb': {
'max': 18,
'min': 15
},
'mar': {
'max': 20,
'min': 17
}
}
Теперь я хочу знать, какой месяц имеет наибольшее max
значение. Для этого примера я хотел бы получить этот dict в результате (поскольку 21> 18 в феврале и 21> 20 в марте).:
'jan': {
'max': 21,
'min': 12
}
Я могу легко получить самый большой словарь с помощью max()
:
>>> max(t.values(), key=lambda s: s.get('max'))
{'max': 21, 'min': 12}
Тем не менее, для меня также важно получить ключ dict, поэтому вместо того, чтобы просто {'max': 21, 'min': 12}
получить полный 'jan': {'max':21, 'min':12}
.
Текущий подход, который я использую, — это базовый цикл проверки значений:
max_dict = dict()
max_key = ''
for k, v in t.items():
if max_dict.get('max',0) <= v.get('max', 0):
max_dict = v
max_key = k
И теперь max_key
содержит «jan», в то время max_dict
как содержит {'max': 21, 'min': 12}
.
Тем не менее, я предполагаю, что какая-то сортировка с помощью max может обеспечить результат более простым способом.
Ответ №1:
Вы могли бы выполнить максимальное значение t.items()
с помощью соответствующего ключа:
>>> max(t.items(), key=lambda s: s[1]['max'])
('jan', {'max': 21, 'min': 12})
Комментарии:
1. Хороший, используя кортеж, поступающий из
t.items()