基于数组值的最大总和对字典进行排序

时间:2015-06-29 20:51:05

标签: python sorting dictionary key-value

我知道有类似的问题,但我找不到我的具体问题的答案。所以我有成千上万的条目具有以下格式:

for key,value in sorted(dictionary.items(),key=lambda i:i[1][0],reverse=True):
    print key,dictionary[key][0],dictionary[key][1],dictionary[key][2]

以上是我得到的输出示例,但我想要的是对数据进行排序,使得第一行具有最大的数组值(也就是我想要geneE到是这个输出中的第一个,因为它具有最大的总和)。在我的字典中,基因是关键,数字列表是值,创建键值对。目前这是我的代码,根据第一列数字,按降序打印出从最大到最小的值,而不是我想要的总和。

{{1}}

我正在努力弄清楚如何在Python中声明我希望它根据列表值的总和而不仅仅是列表的第一个值进行排序。任何帮助将非常感谢!谢谢。

1 个答案:

答案 0 :(得分:3)

我假设您的dict格式如下:

{'geneA' : [6,0,0] ,...}

此键功能将正确输出按您想要的顺序排序的列表:

>>> for key,value in sorted(dictionary.items(),key=lambda i:sum(i[1]),reverse=True):
    print key,value


geneE [0, 6, 1]
geneA [6, 0, 0]
geneB [5, 0, 0]
geneC [4, 0, 0]
geneD [3, 0, 0]