【问题标题】:case-insensitive alphabetical sorting of nested lists嵌套列表的不区分大小写的字母排序
【发布时间】:2023-03-17 12:55:02
【问题描述】:

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

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,你关于不使用“cmp”的建议很有魅力!非常感谢各位!

【问题讨论】:

    标签: python


    【解决方案1】:

    试试:

    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)

    【讨论】:

      【解决方案2】:
      ak.sort(cmp=lambda x, y: cmp(x[0].lower(), y[0].lower()))
      

      您是否忘记了x[0].lower() 中的括号?

      【讨论】:

        猜你喜欢
        • 2012-09-20
        • 1970-01-01
        • 2011-08-14
        • 2019-02-06
        • 1970-01-01
        • 1970-01-01
        • 2011-07-25
        相关资源
        最近更新 更多