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)