我有一個像這樣的二維列表: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
提交
取消