我试图找到具有最高值的元素的键。这些值是另一本字典,因此此处提到的方法:Getting key with maximum value in dictionary?无法使用。
结构如下:
{'a': {'points': 7, 'difference': 0}, 'b': {'points': 6, 'difference': 1}, 'c': {'points': 4, 'difference': -3}, 'd': {'points': 7, 'difference': 2}}
具有最多点数的元素应为max元素,如果点数相同,则应选择差异较大的元素。
因此,在这种情况下,最大元素为 d 。
我知道我可以使用for循环并找到最大元素,但是还有其他方法吗?
答案 0 :(得分:0)
d = {'a': {'points': 7, 'difference': 0}, 'b': {'points': 6, 'difference': 1}, 'c': {'points': 4, 'difference': -3}, 'd': {'points': 7, 'difference': 2}}
result = max(d.keys(), key = lambda k: (a[k]["points"], a[k]["difference"]))
result
将基于该键的点数(如果该点是平局,则为该键的差异)为您提供最大的键值
答案 1 :(得分:0)
您可以执行以下操作:
my_dict = {'a': {'points': 7, 'difference': 0}, 'b': {'points': 6, 'difference': 1}, 'c': {'points': 4, 'difference': -3}, 'd': {'points': 7, 'difference': 2}}
_key, _value = '', {'points': 0, 'difference': 0}
for key, elm in my_dict.items():
if elm['points'] >= _value['points']:
if elm['difference'] >= _value['difference']:
_key, _value = key, elm
out = {_key: _value}
print(out)
输出:
{'d': {'points': 7, 'difference': 2}}
或者,使用max
:
out = max(my_dict.items(), key=lambda k: (k[1]['points'], k[1]['difference']))
退出:
('d', {'points': 7, 'difference': 2})