Warm tip: This article is reproduced from serverfault.com, please click

python-如何在字典中获得特定密钥最大的字典?

(python - How can I get the dict whose specific key is maximum in a dict of dicts?)

发布于 2020-12-04 05:27:24

假设我有一本每月最高和最低温度的字典:

t = {
    'jan': {
        'max': 21,
        'min': 12
    },
    'feb': {
        'max': 18,
        'min': 15
    },
    'mar': {
        'max': 20,
        'min': 17
    }
}

现在,我想知道哪个月份最max有价值。对于此示例,我想得出此结果(因为2月21> 18,3月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进行某种排序可以以更直接的方式提供结果。

Questioner
fedorqui 'SO stop harming'
Viewed
0
jakevdp 2020-12-04 13:31:39

你可以t.items()使用适当的键进行最大的操作

>>> max(t.items(), key=lambda s: s[1]['max'])
('jan', {'max': 21, 'min': 12})