如何通过对其值进行排序来返回已排序字典的键

时间:2015-04-08 19:08:11

标签: python sorting dictionary

我有这样的字典:

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'不支持的操作数类型和'列出'

我该怎么办?

1 个答案:

答案 0 :(得分:2)

表达式sum(family.values())将尝试将列表列表减少为以初始值0开头的总和。当您尝试将列表添加到0时,会得到TypeError,因为操作是两个操作数都不支持。

请尝试这样:

sorted(family, key=lambda k: sum(family[k]))

lambda表达式的参数是k,传递给它的参数将是iterable的每个元素,在本例中,family.keys()可以缩短为{{1}因为dicts可以被视为其键集的可迭代。每个元素的键的值将只是字典值的总和,即列表。