如何以最有效的方式获取字典列表中最大值的相应键?

时间:2017-06-17 00:07:33

标签: python python-3.x dictionary

我们假设有一个像这样的词典列表:

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)。

3 个答案:

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