【发布时间】:2011-07-25 20:23:12
【问题描述】:
所以我有一个包含一大堆元组的列表
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
#############################EDIT############# #######################
另外,当我尝试打印元组列表时,它会返回此错误:
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):
然后出现错误
###############EDIT###################
另一方面,通过迭代打印列表效果很好
所以
for i in j:
print(i)
工作正常,而 print(j) 会返回该错误
【问题讨论】:
-
您的代码在 Python 3.1.2 中对我来说可以正常工作。
-
这里也一样,“为我工作。”您确定要排序的列表实际上具有这些值吗?也许您有很多项目(在那 1000 多个有零的列表中)。您遇到的错误似乎是一个单独的问题,这可能是这里的一个可能原因。排序是您要处理的问题还是那个错误?
-
代码在 Python 2.6 中运行良好
-
是的,我上面写的代码也适用于我,问题可能出在列表上,但我不能在此处发布列表,因为它就像数千行一样长...如果我使用列表上面它有效,但如果我使用实际列表,它就不起作用
-
我在排序之前打印了一次,在排序之后又打印了一次,所以没有其他代码可以干扰
标签: python list sorting python-3.x tuples