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