gpt4 book ai didi

Python:按不区分大小写的字母顺序对元组列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:46 26 4
gpt4 key购买 nike

我有一个元组列表(“双元组”)

[('aaa',2), ('BBB',7), ('ccc',0)]

我需要按那个顺序打印它,但是

>>> sorted([('aaa',2), ('BBB',7), ('ccc',0)])

给予

[('BBB', 7), ('aaa', 2), ('ccc', 0)]

list.sort(key=str.tolower)

(显然)不起作用,因为

AttributeError: type object 'str' has no attribute 'tolower'

我不想更改列表中的字符串。

另一个答案给了

list.sort(key=lambda (a, b): (a.lower(), b))

但这一定是 Python 2 的东西,因为

SyntaxError: invalid syntax

...首先(

itemgetter() 没有帮助,因为只允许使用一个“键”

最佳答案

你说得对,这是 Python 2 的问题,但修复非常简单:

list.sort(key=lambda a: (a[0].lower(), a[1]))

这看起来并没有那么清楚,因为名称 ab 没有比 a[0]< 更多的内在含义a[1]。 (如果他们是,比方说,namescore 之类的东西,那可能就是另一回事了……)


Python 2 允许您将函数参数解包为元组。这在一些简单的情况下有效(有时很方便),但有很多问题。参见 PEP 3113为什么它被删除。

处理此问题的规范方法是仅拆分函数内的值,这在 lambda 中不太适用。但是,您是否有理由不能不按规定定义函数?

def twoplekey(ab):
a, b = ab
return a.lower(), b

list.sort(key=twoplekey)

作为旁注,您真的不应该将您的列表称为 list;隐藏了 list 类型,所以你不能再使用它(例如,如果你想通过编写 list(tup) 将元组转换为列表,你将尝试调用您的列表,并得到一个莫名其妙的错误)。

关于Python:按不区分大小写的字母顺序对元组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com