簡體   English   中英

將str.lower用作list.sort的鍵有什么作用?

[英]What does passing str.lower as the key to list.sort do?

def Sorting(lst):
    lst.sort(key=str.lower)
    lst.sort(key=len)
    return lst

lst = ["Ronit", "Dan", "Yael"]
print Sorting(lst)

此代碼按字母順序然后按長度對列表進行排序。 我想知道為什么它會“降低”? 大寫字母不起作用嗎? 這是為了什么

它執行不區分大小寫的排序

讓我們稍微修改一下示例,以包含另一個條目“ dan”:

lst = ['Ronit', 'Dan', 'dan']

自然,您希望“丹”和“丹”一起出現。 但是,由於字符串排序的屬性,它們不是。 相反,普通的list.sort調用將為您提供:

lst.sort()
print(lst)
['Dan', 'Ronit', 'dan']

另一方面,指定str.lower給您以下內容:

lst.sort(key=str.lower)
print(lst)
['Dan', 'dan', 'Ronit']

在此,原始列表元素是根據其小寫字母等效項進行排序的。

現在,假設您了解key作用(是,按長度排序),第二個帶有len list.sort調用現在應該是不言自明的。


要了解為什么在第二個之前需要第一個,請考慮另一個人為的示例:

lst = ['Ronit', 'Dan', 'ram', 'dan']

首先,只考慮key=len

lst.sort(key=len)
print(lst)
['Dan', 'ram', 'dan', 'Ronit']

那個“公羊”在這里看起來不合適。 這正是我們為什么要邁出第一步的原因。 現在,增加這一步使我們的輸出更加明智。

lst.sort(key=str.lower)
lst.sort(key=len)

print(lst)
['Dan', 'dan', 'ram', 'Ronit']

因此,總而言之,元素首先不區分大小寫地排序,然后按長度排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM