Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何以最有效的方式获取字典列表中最大值的对应键?_Python_Python 3.x_Dictionary - Fatal编程技术网

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

Python 如何以最有效的方式获取字典列表中最大值的对应键?,python,python-3.x,dictionary,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)。假设您使用的是一个常规的未排序字典,那么您需要遍历整个字典一次。跟踪最大的元素是什么,如果看到较大的元素,请更新它。如果相同,则添加到列表中 largest_key = [

让我们假设有这样一个字典列表:

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

假设您使用的是一个常规的未排序字典,那么您需要遍历整个字典一次。跟踪最大的元素是什么,如果看到较大的元素,请更新它。如果相同,则添加到列表中

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)

使用类似以下内容的理解:

代码: 它是如何工作的? 迭代
dict
中的
项()
,并将它们作为
(值,键)
的元组发出,元组中的
值位于第一位
max()
然后可以找到最大的
值,因为元组按元组中的每个元素排序,第一个元素与第一个元素匹配。然后取最大元组的第二个元素(
[1]
),因为它是
dict
中max
值的

测试代码: 结果;
我想出了这个可能是最有效的代码:


max(lst,key=lambda x:lst[x])

有一件事我忘了提。考虑示例列表。如果有两个(或更多)键具有相同的值(恰好是最大值),是否可以提取所有这些键?我更新了我的示例以演示如何执行此操作。
max((v, k) for k, v in lst.items())[1]
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])
(1, 6)