我正试图通过内部列表第一个元素对这个嵌套列表进行排序:
ak = [ ['a',1],['E',2],['C',13],['A',11],['b',9] ] ak.sort(cmp=lambda x, y: cmp(x[0], y[0])) for i in ak: { print i }
默认情况下,python认为A> a,因此我得到的输出是:
['A', 11] ['C', 13] ['E', 2] ['a', 1] ['b', 9]
我已经尝试通过添加x [0] .lower等将所有列表值转换为偶数情况,但没有用.我如何强制python(我正在使用2.4版本)进行不区分大小写的字母排序?
编辑:
Jarret和Brian,你对括号的假设是正确的!我忘了把它们放进去!而Jarret,你对不使用"cmp"的建议就像一个魅力!非常感谢!
Jarret Hardi.. 9
尝试:
ak.sort(key=lambda x:x[0].lower())
我建议您避免使用,cmp
因为这已在Python 2.6中弃用,并在3.0中删除.我知道你正在使用2.4,但其原因cmp
已经变得不受欢迎,因为它是一种非常缓慢的排序方式.
我不确定为什么你的努力lower
失败了,但是......也许你忘了使用函数调用而不仅仅是函数名?(即:cmp(x[0].lower(), y[0].lower())
对比cmp(x[0].lower, y[0].lower)
)
尝试:
ak.sort(key=lambda x:x[0].lower())
我建议您避免使用,cmp
因为这已在Python 2.6中弃用,并在3.0中删除.我知道你正在使用2.4,但其原因cmp
已经变得不受欢迎,因为它是一种非常缓慢的排序方式.
我不确定为什么你的努力lower
失败了,但是......也许你忘了使用函数调用而不仅仅是函数名?(即:cmp(x[0].lower(), y[0].lower())
对比cmp(x[0].lower, y[0].lower)
)