Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于数组值最大和的排序字典_Python_Sorting_Dictionary_Key Value - Fatal编程技术网

Python 基于数组值最大和的排序字典

Python 基于数组值最大和的排序字典,python,sorting,dictionary,key-value,Python,Sorting,Dictionary,Key Value,我知道也有类似的问题,但我找不到具体问题的答案。因此,我有数以千计的条目,其格式如下: geneA 6 0 0 geneB 5 0 0 geneC 4 0 0 geneD 3 0 0 geneE 0 6 1 上面是我得到的输出的一个示例,但我希望对数据进行排序,使第一行的数组值之和最大(也就是说,我希望geneE是这个输出中的第一行,因为它的和最大)。在我的字典中,基因是键,数字列表是值,创建键-值对。目前,这是我的代码,它根据第一列数字按降序打印出从大

我知道也有类似的问题,但我找不到具体问题的答案。因此,我有数以千计的条目,其格式如下:

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中声明我希望它基于列表值的总和排序,而不仅仅是列表的第一个值。任何帮助都将不胜感激!多谢各位

我假设您的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]

您描述dict的方式似乎与您在其中选择项目的方式不匹配。你能编辑这个问题来显示你的dict格式的确切方式吗(它是否有一个数字列表,或者它们是一个空格分隔的字符串,等等)?我刚刚缩短了打印语句。它看起来是这样的:print key,dictionary[key][0],dictionary[key][1],dictionary[key][2]