比较字典,将整数作为值和键

时间:2018-06-24 00:57:02

标签: python python-3.x

我需要创建一种方法,该方法接受多个词典并返回具有最大价值的词典。如果某些字典共享相同的最大值,则它应返回具有更大的键int值的字典。

p1 = {4:5}
p2 = {4:3}
p3 = {8:2}
p4 = {12:5}

def compare(*args):
    #return p4

2 个答案:

答案 0 :(得分:3)

maxkey一起使用。

代码

def compare(*dicts):
    return max(dicts, key = lambda d: max((v, k) for k, v in d.items()))

示例

p1 = {4:5}
p2 = {4:3}
p3 = {8:2}
p4 = {12:5}

print(compare(p1, p2, p3, p4)) # {12: 5}

答案 1 :(得分:1)

此代码使用以下事实:如果字典中只有一项,则该项将在字典中最大,并且可以通过调用max()来提取。然后将每个项目取反以将值放在键的前面,并通过再次调用max()来计算最大的项目。

def compare(*dicts):
    return max([(max(d.items())[::-1],d) for d in dicts])[-1]

此功能的速度大约是OlivierMelançon提出的功能的两倍。 (lambda总是很慢。)