我需要创建一种方法,该方法接受多个词典并返回具有最大价值的词典。如果某些字典共享相同的最大值,则它应返回具有更大的键int值的字典。
即
p1 = {4:5}
p2 = {4:3}
p3 = {8:2}
p4 = {12:5}
def compare(*args):
#return p4
答案 0 :(得分:3)
将max
与key
一起使用。
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
总是很慢。)