我有这样的字典:
a = {'str1':[int,int,int],'str2':[int,int]}
我想返回像['str1', 'str2']
这样的键,因为总和(a [str1])>合计([STR2])
我尝试使用sum函数:
return sorted(a.keys(), key = lambda a.values(): sum(a.values()))
但它引发了一个错误。 TypeError:+:' int'不支持的操作数类型和'列出'
我该怎么办?
答案 0 :(得分:2)
表达式sum(family.values())
将尝试将列表列表减少为以初始值0开头的总和。当您尝试将列表添加到0时,会得到TypeError
,因为操作是两个操作数都不支持。
请尝试这样:
sorted(family, key=lambda k: sum(family[k]))
lambda表达式的参数是k
,传递给它的参数将是iterable的每个元素,在本例中,family.keys()
可以缩短为{{1}因为dicts可以被视为其键集的可迭代。每个元素的键的值将只是字典值的总和,即列表。