我们假设有一个像这样的词典列表:
lst = {(1,1):2, (1,2):5, (1,3):10, (1,4):14, (1,6):22}
我想要一个简单(最有效)的函数,它返回其值最大的字典键。
例如:
key_for_max_value_in_dict(lst) = (1,6)
因为元组(1,6)
具有最大值(22)。
答案 0 :(得分:2)
我想出了这个代码可能是最有效的代码:
User
答案 1 :(得分:1)
使用理解为:
max((v, k) for k, v in lst.items())[1]
对items()
中的dict
进行迭代,并在元组中首先将(value, key)
作为value
的元组发出。然后max()
可以找到最大的value
,因为元组按元组中的每个元素排序,第一个元素与第一个元素匹配。然后取最大元组的第二个元素([1]
),因为它是key
中最大value
的{{1}}值。
dict
lst = {(1,1):2, (1,2):5, (1,3):10, (1,4):14, (1,6):22}
print(max((v, k) for k, v in lst.items())[1])
答案 2 :(得分:0)
假设您使用的是常规未排序的字典,则需要将整个过程放下一次。跟踪最大元素是什么,如果你看到更大的元素,请更新它。如果相同,请添加到列表中。
largest_key = []
largest_value = 0
for key, value in lst.items():
if value > largest_value:
largest_value = value
largest_key = [key]
elif value == largest_value:
largest_key.append(key)