我怎样才能得到一个字典中特定键最大的字典?
How can I get the dict whose specific key is maximum in a dict of dicts?
假设我有一本包含每个月最高和最低温度的字典:
t = {
'jan': {
'max': 21,
'min': 12
},
'feb': {
'max': 18,
'min': 15
},
'mar': {
'max': 20,
'min': 17
}
}
现在我想知道哪个月的 max
值最大。对于这个例子,我想得到这个字典作为结果(因为 21 > 18 在 2 月,21 > 20 在 3 月):
'jan': {
'max': 21,
'min': 12
}
我可以用max()
轻松得到最大的字典是什么:
>>> max(t.values(), key=lambda s: s.get('max'))
{'max': 21, 'min': 12}
然而,获取字典的密钥对我来说也很重要,所以我想要完整的 'jan': {'max':21, 'min':12}
.
而不是 {'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 进行某种排序可以以更直接的方式提供结果。
您可以使用适当的密钥完成 t.items()
的最大值:
>>> max(t.items(), key=lambda s: s[1]['max'])
('jan', {'max': 21, 'min': 12})
假设我有一本包含每个月最高和最低温度的字典:
t = {
'jan': {
'max': 21,
'min': 12
},
'feb': {
'max': 18,
'min': 15
},
'mar': {
'max': 20,
'min': 17
}
}
现在我想知道哪个月的 max
值最大。对于这个例子,我想得到这个字典作为结果(因为 21 > 18 在 2 月,21 > 20 在 3 月):
'jan': {
'max': 21,
'min': 12
}
我可以用max()
轻松得到最大的字典是什么:
>>> max(t.values(), key=lambda s: s.get('max'))
{'max': 21, 'min': 12}
然而,获取字典的密钥对我来说也很重要,所以我想要完整的 'jan': {'max':21, 'min':12}
.
{'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 进行某种排序可以以更直接的方式提供结果。
您可以使用适当的密钥完成 t.items()
的最大值:
>>> max(t.items(), key=lambda s: s[1]['max'])
('jan', {'max': 21, 'min': 12})