當前位置:成語大全網 - 新華字典 - python中對組合數據類型x進行排序的內置函數是

python中對組合數據類型x進行排序的內置函數是

python有兩個內置的函數用於實現排序,壹個是list.sort()函數,壹個是sorted()函數。

區別1:list.sort()函數只能處理list類型數據的排序;sorted()則可以處理多種類型數據的排序。

區別2:list.sort()會修改原來的list為排序後的結果;sorted()不會修改原來的數據,只是返回壹個排序後的對象。

下面來動手寫點代碼進行測試:

list進行簡單的排序

1 >>>a=['a','f','c','x','e']2 >>>a.sort()3 >>>a4 [a','c','e','f','x']

sorted()進行簡單排序

1 >>>a=['a','f','c','x','e']2 >>>a_new=sorted(a)3 >>>a_new4 ['a', 'c', 'e', 'f', 'x']

list.sort()和sorted都有默認的參數reverse,該參數的默認值為“False”,即默認升序排列。如果要進行降序排列:

1 >>>a=['a','f','c','x','e']2 >>>a_new=sorted(a,reverse=True)3 >>>a_new4 ['x', 'f', 'e', 'c', 'a']

對元組進行排列,不能使用list.sort()函數:

1 >>>a=('a','f','c','x','e')2 >>>a_new=a.sort()3

4 ttributeError: 'tuple' object has no attribute 'sort'

對字典的排序可以按照字典的key或者value進行排序:

1 >>>dic={"aa":11,"ff":5,"ee":22}2 >>>printsorted(dic.keys())3 ['aa', 'ee', 'ff']

從python2.4開始list.sort()和sorted()都引入了key參數來指定壹個函數進行排序,有了key參數以後我們就可以對更加復雜的數據進行排序 。

假如需要排序的數據為壹個list,但list的每壹個元素都是壹個字典,排序的方法如下:

>>>dic=[{"name":"sunny","age":20},

{"name":"bell","age":5},

{"name":"jim","age":1},

{"name":"jan","age":10}]>>>print sorted(dic,key=lambda arg:arg.get('age'),reverse=False) #按照每個字典的age的值進行排序,字典的方法dict.get(key)將返回指定鍵的值。

#輸出結果為:[{'age': 1, 'name': 'jim'}, {'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 20, 'name': 'sunny'}]

>>>print sorted(dic,key=lambda arg:arg.get('name'),reverse=False) #按照每個字典的name的值進行排序

#輸出結果為:[{'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 1, 'name': 'jim'}, {'age': 20, 'name': 'sunny'}]

假如需要排序的數據為壹個二維的list,即list的每壹個元素也是壹個list,方法與上面的例子類似:

>>>a=[['100','8','30'],['200','5','50'],['300','1','20']]>>>print sorted(a,key=lambda arg:arg[1]) #按照每個list的第1個元素進行排序

[['300', '1', '20'], ['200', '5', '50'], ['100', '8', '30']]

前面的2個例子中,key參數的值都是函數。在sorted函數中,key參數後面的函數的參數的數量只能是壹個。lambda arg:arg.get('age')是壹個lambda匿名函數,它是壹個沒有函數名的單語句函數。冒號左邊是參數,冒號右邊的返回值,返回值將被用於排序。