根据数组值的最大总和对字典进行排序

Sorting dictionary based on largest sum of array values

我知道那里有类似的问题,但我找不到我的具体问题的答案。所以我有数千个条目,格式如下:

geneA   6  0  0
geneB   5  0  0
geneC   4  0  0
geneD   3  0  0
geneE   0  6  1

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

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]

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

我假设你的字典格式如下:

{'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]