Python 如何返回已排序的词典';通过对其值进行排序来删除关键帧
我有一本这样的字典:Python 如何返回已排序的词典';通过对其值进行排序来删除关键帧,python,sorting,dictionary,Python,Sorting,Dictionary,我有一本这样的字典: a = {'str1':[int,int,int],'str2':[int,int]} 我想返回像['str1','str2']这样的键,因为sum之和(a[str1])>sum(a[str2])) 我尝试使用sum函数: return sorted(a.keys(), key = lambda a.values(): sum(a.values())) 但这会引起一个错误。 TypeError:不支持+:“int”和“list”的操作数类型 我该怎么做?表达式sum(f
a = {'str1':[int,int,int],'str2':[int,int]}
我想返回像['str1','str2']
这样的键,因为sum之和(a[str1])>sum(a[str2]))
我尝试使用sum函数:
return sorted(a.keys(), key = lambda a.values(): sum(a.values()))
但这会引起一个错误。
TypeError:不支持+:“int”和“list”的操作数类型
我该怎么做?表达式sum(family.values())
将尝试将列表列表减少为以初始值0开始的和。尝试将列表添加到0时,会出现TypeError
,因为这两个操作数都不支持该操作
请像这样尝试:
sorted(family, key=lambda k: sum(family[k]))
lambda表达式的参数是
k
,传递给它的参数将是iterable的每个元素,在本例中,iterable是family.keys()
,可以缩短为family
,因为dict可以被视为其键集的iterables。每个元素的键的值将只是字典值的总和,它是一个列表。严格来说,.keys()
不是必需的,因为在字典上迭代默认会产生它的键。如果两个人的值总和相等,他们应该按字母顺序出现。如何获取?在按值之和排序之前,请按键排序:sorted(排序(系列),key=lambda k:sum(系列[k])