Skip to main content
 首页 » 编程设计

python之嵌套列表的不区分大小写的字母排序

2025年05月04日10webabcd

我正在尝试按内部列表的第一个元素对这个嵌套列表进行排序:

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 and Brian, your assumptions about parenthesis were right! I did forget to put them in! And Jarret, your suggestions about not using "cmp" works like a charm! Thanks a lot guys!

请您参考如下方法:

尝试:

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) )