获取具有最高值的元素的键?该值是另一本字典

时间:2019-04-22 23:04:29

标签: python

我试图找到具有最高值的元素的键。这些值是另一本字典,因此此处提到的方法: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循环并找到最大元素,但是还有其他方法吗?

2 个答案:

答案 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})