Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_List_Sorting_Python 3.x_Tuples - Fatal编程技术网

python元组列表排序

python元组列表排序,python,list,sorting,python-3.x,tuples,Python,List,Sorting,Python 3.x,Tuples,所以我有一个包含一大堆元组的列表 j = [('jHKT', 'Dlwp Dfbd Gwlgfwqs (1kkk)', 53.0), ('jHKT', 'jbdbjf Bwvbly (1kk1)', 35.0), ('jHKT', 'Tfstzfy (2006)', 9.0), ('jHKT', 'fjznfnt Dwjbzn (1kk1)', 25.0), ('jHKT', 'Vznbsq sfnkz (1k8k)', 4.0), ('jHKT', 'fxzt, Clwwny! (2005

所以我有一个包含一大堆元组的列表

j = 

[('jHKT', 'Dlwp Dfbd Gwlgfwqs (1kkk)', 53.0),
('jHKT', 'jbdbjf Bwvbly (1kk1)', 35.0),
('jHKT', 'Tfstzfy (2006)', 9.0),
('jHKT', 'fjznfnt Dwjbzn (1kk1)', 25.0),
('jHKT', 'Vznbsq sfnkz (1k8k)', 4.0),
('jHKT', 'fxzt, Clwwny! (2005)', 8.0),
('jHKT', "Dwfs Thzs jfbn Wf'lf jbllzfd? (1kk1)", 12.0),
('jHKT', 'Chbzljbn wf thf Bwbld (1kk8)', 30.0),
('jHKT', 'Vblfdzctzwn (2006)', 8.0),
('jHKT', 'jwltbl Kwjbbt (1kk5)', 13.0)]
我尝试使用元组的第三个元素作为索引对其进行排序:

请注意,上面的列表只是一个部分列表…实际列表包含数千个元素

无论如何,我是这样做的:

j = sorted(j, key=lambda e : e[2])
但当我这样做的时候,它会弄乱元组的第三个元素,我非常怀疑它是否真的排序了……这里是另一个部分输出列表

('jHKT', 'Frz yzng (2004)', 0.0)
('jHKT', 'kff thr Mvp (2003)', 0.0)
('jHKT', 'HzpHkpBvttlr.ckm: Hzp Hkp 4 Lzfr (2001)', 0.0)
('jHKT', 'z Wvlk thr Lznr (1970)', 0.0)
('jHKT', '1971: erzsknrrs kf svr (2007)', 0.0)
('jHKT', 'Wzld Rzdr, Thr (1960)', 0.0)
('jHKT', 'Dzshdkgz (2005)', 0.0)
('jHKT', 'Lzttlr Thzngs, Thr (2006)', 0.0)
('jHKT', 'Trrmznvl rrrkr (2002)', 0.0)
('jHKT', 'Hqngry Bvchrlkrs Clqb, Thr (1999)', 0.0)
('jHKT', 'Swrrt Lkvr, Bzttrr (1967)', 0.0)
('jHKT', 'Trn tk Chz tk (1990)', 0.0)
('jHKT', 'Bvr-Crl-knv (1987)', 0.0)
('jHKT', 'Rknny & Czndy zn vll kf qs (2006)', 0.0)
在本例中,它最终将元组的所有第三个元素重置为0

我做错了什么

我正在使用python 3

关于强刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支########################################

另外,当我试图打印元组列表时,它会返回以下错误:

  print(j)
IOError: [Errno 22] Invalid argument
印刷会突然停止…:

 ('sadfasdf (1991)', 'xcvwert (1985)', 0.0), ('r3sdaf (1991)', 'jkzxkk (1993)', 0.0), ('werwww (1991)', 'Third WhTraceback (most recent call last):
然后出现错误

编辑

另一方面,通过迭代打印列表效果很好

所以


工作正常,而print(j)将返回该错误

我认为您的代码工作正常,您可以看到列表的第一部分,其中key是realy 0.0。您只需按升序对列表进行排序:-)

我也认为(快速浏览)可以。。 检查此链接。。它涉及python中的各种排序技术


正如其他人所说,代码非常好。你应该试着隔离情况,并试着找出问题到底发生在哪里

  • 它是否发生在只包含列表分配和排序操作的简单脚本中
  • 其他列表操作是否有效?尝试在没有自定义函数的情况下进行切片、迭代或排序
  • 它是否发生在当前列表的某个片段中?他是你的朋友

比较已排序和未排序的列表,看看排序是否确实在更改数据,可能是值得的。您可以尝试以下简单的方法:

print sum(e[2] for e in j)
j = sorted(j, key=lambda e : e[2])
print sum(e[2] for e in j)

在Python3.1.2中,您的代码对我来说很好。这里也是“对我有用”。您确定正在排序的列表中确实有这些值吗?也许您有很多项(在1000+列表中有零)。您所犯的错误似乎是一个单独的问题,这可能是这里的一个原因。排序是你想处理的问题还是那个错误?代码在Python 2.6中运行良好是的,我上面写的代码对我来说也很好,问题可能是列表,但我不能在这里发布列表,因为它有数千行长…如果我使用上面的列表,它可以工作,但是如果我使用实际的列表,它不起作用我在排序之前打印,在排序之后再打印,因此没有其他代码会干扰请添加一个指向该对分方法的链接
print sum(e[2] for e in j)
j = sorted(j, key=lambda e : e[2])
print sum(e[2] for e in j)