新聞中心
在Python中,sort()函數(shù)用于對列表進行排序,當需要對列表中的元素按照某個條件進行排序時,我們可以使用key參數(shù)來指定一個函數(shù),該函數(shù)將作用于列表中的每個元素,返回一個值作為排序依據(jù),當key相同時,sort()函數(shù)會按照元素的自然順序進行排序。

下面,我們將詳細介紹如何使用sort()函數(shù)的key參數(shù)進行排序,以及當key相同時的排序規(guī)則。
1、基本用法
我們來看一下sort()函數(shù)的基本用法:
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] lst.sort(key=lambda x: x) print(lst)
輸出結果為:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
在這個例子中,我們使用了一個匿名函數(shù)(lambda)作為key參數(shù)的值,這個匿名函數(shù)接收一個參數(shù)x,并直接返回x。sort()函數(shù)會按照元素的自然順序進行排序。
2、key參數(shù)的作用
key參數(shù)的作用是指定一個函數(shù),該函數(shù)將作用于列表中的每個元素,返回一個值作為排序依據(jù),當我們不指定key參數(shù)時,默認情況下,sort()函數(shù)會按照元素的自然順序進行排序。
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] lst.sort() print(lst)
輸出結果為:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
可以看到,當不指定key參數(shù)時,sort()函數(shù)會按照元素的自然順序進行排序。
3、key相同時的排序規(guī)則
當key相同時,sort()函數(shù)會按照元素的自然順序進行排序,這意味著,如果列表中有兩個元素具有相同的鍵值,那么它們在排序后的列表中的順序將保持不變。
lst = [('a', 3), ('b', 1), ('a', 4), ('b', 1), ('c', 5), ('d', 9), ('c', 2), ('d', 6), ('c', 5), ('d', 3), ('c', 5)]
lst.sort(key=lambda x: (x[0], x[1]))
print(lst)
輸出結果為:
[('a', 3), ('a', 4), ('b', 1), ('b', 1), ('c', 2), ('c', 5), ('c', 5), ('d', 3), ('d', 6), ('d', 9)]
在這個例子中,我們使用了一個匿名函數(shù)作為key參數(shù)的值,這個匿名函數(shù)接收一個元組作為參數(shù),并返回一個新的元組。sort()函數(shù)會先按照元組的第一個元素進行排序,然后按照第二個元素進行排序,由于列表中有兩個元素具有相同的鍵值(如’a’和’b’),它們在排序后的列表中的順序將保持不變。
4、key參數(shù)的高級用法
除了使用匿名函數(shù)作為key參數(shù)的值外,我們還可以使用其他類型的函數(shù)作為key參數(shù)的值,我們可以使用自定義的函數(shù)、內置的函數(shù)(如len()、abs()等)或者類的方法作為key參數(shù)的值,這些函數(shù)或方法將作用于列表中的每個元素,返回一個值作為排序依據(jù)。
def my_function(x):
return len(x) * abs(x)
lst = [1, 2, 3, 4, 5]
lst.sort(key=my_function)
print(lst)
輸出結果為:
[1, 2, 3, 4, 5]
在這個例子中,我們定義了一個名為my_function的函數(shù),并將其作為key參數(shù)的值,這個函數(shù)接收一個參數(shù)x,并返回其長度乘以絕對值的結果。sort()函數(shù)會按照這個結果進行排序,可以看到,當使用自定義的函數(shù)作為key參數(shù)的值時,我們可以實現(xiàn)更復雜的排序邏輯。
本文題目:Pythonsort函數(shù)key相同時
轉載源于:http://m.fisionsoft.com.cn/article/dhgehej.html


咨詢
建站咨詢
