首页 > 解决方案 > 如何获取字典中特定键最大的字典?

问题描述

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

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 进行某种排序可以以更直接的方式提供结果。

标签: pythondictionarymax

解决方案


t.items()您可以使用适当的键来做 max :

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

推荐阅读