我有一个像这样的二维列表: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
1 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
传递给键的项目是list
s。同时,一个键可以输出一个序列,例如 atuple
或 a list
,正如您已经看到的那样,将按字典顺序进行比较。当您没有明确指定密钥时,就会发生这种情况。
所以一个键可以转换一个输入列表并返回另一个列表:
sorted(mylist, key=lambda row: [row[0], row[1].casefold()])
是否要对键中每一行的第三个元素执行任何操作取决于您。
添加回答
举报
0/150
提交
取消