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

How can I case-insensitive sort a 2D List in 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

传递给键的项目是 lists。同时,一个键可以输出一个序列,例如 tuplelist,正如您已经看到的那样,将按字典顺序进行比较。当您没有明确指定密钥时,就会发生这种情况。

所以一个键可以转换一个输入列表和return另一个列表:

sorted(mylist, key=lambda row: [row[0], row[1].casefold()])

是否要对键中每行的第三个元素执行任何操作由您决定。