如何在 Python 中对二维列表进行不区分大小写的排序?

我有一个像这样的二维列表:

mylist = [[1, "Banana", "description"],[2, "Peach", "description"],[1,"apple", "description"],[2, "orange", "description"]]

我想先按数字对列表进行排序,然后按对象的“名称”对列表进行排序。但是当我对它进行排序时,sorted(mylist)我得到以下输出:

mylist=[[1, 'Banana', 'description'], [1, 'apple', 'description'], [2, 'Peach', 'description'], [2, 'orange', 'description']]

相反,我想要一个不区分大小写的名称排序:

mylist = [[1, 'apple', 'description'], [1, 'Banana', 'description'], [2, 'orange', 'description'], [2, 'Peach', 'description']]

我尝试了密钥key=str.casefold,但它不起作用,因为我收到以下错误消息:

TypeError: descriptor 'casefold' for 'str' objects doesn't apply to a 'list' object


qq_花开花谢_0
浏览 97回答 1
1回答

慕村9548890

传递给键的项目是lists。同时,一个键可以输出一个序列,例如 atuple或 a list,正如您已经看到的那样,将按字典顺序进行比较。当您没有明确指定密钥时,就会发生这种情况。所以一个键可以转换一个输入列表并返回另一个列表:sorted(mylist, key=lambda row: [row[0], row[1].casefold()])是否要对键中每一行的第三个元素执行任何操作取决于您。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python