Python 字典 列表 巢狀 複雜排序大全

2021-06-27 19:07:57 字數 2404 閱讀 9388

一: 字典排序

解析: 使用sorted 方法, 排序後的結果為乙個元組. 可以字串排序(那數字肯定更沒問題了!)   

1:  按照鍵值(value)排序

a = 

b = sorted(a.items(), key=lambda x: x[1], reverse=true)

結果:
[('c', 'usa'), ('b', 'russia'), ('a', 'china'), ('d', 'canada')]
2: 按照鍵名(key)排序
a = 

b = sorted(a.items(), key=lambda x: x[0], reverse=true)

結果:
[('d', 'canada'), ('c', 'usa'), ('b', 'russia'), ('a', 'china')]
3: 巢狀字典, 按照字典鍵名(key)排序
a = , 'c': , 'b': , 'd': }

b = sorted(a.items(), key=lambda x: x[1], reverse=true)

結果:
[('c', ), ('b', ), ('a', ), ('d', )]
4: 巢狀列表, 針對列表第乙個元素排序( 其實直接寫 x: x[1] 就是按照第乙個值排序. )

a = 

b = sorted(a.items(), key=lambda x: x[1][0], reverse=true)

結果:
[('c', [3, 4]), ('d', [2, 1]), ('a', [1, 3]), ('b', [0, 2])]
4-2: 巢狀列表, 按照列表其他元素排序  只需要修改列表對應的下標
a = 

b = sorted(a.items(), key=lambda x: x[1][1], reverse=true)

結果:
[('c', [3, 4]), ('a', [1, 3]), ('b', [0, 2]), ('d', [2, 1])]

總結:  此處使用lambda方法, x: x[1][1] 就可以看做是在訪問字典的值, 想要按照哪個數值排序, 用相應的座標對應即可, 但當字典過於複雜後, 應該選擇用元組儲存, 簡化排序過程. 

*************************==列表排序********************====

二: 列表排序

1: 按照字母排序

a = ['usa', 'china', 'canada', 'russia']

a.sort(reverse=true)

結果:
['usa', 'russia', 'china', 'canada']
2; 巢狀列表的排序, 按照子列表的其他值排序雷系, 修改x[0] 這裡的下標即可

a = [['usa', 'b'], ['china', 'c'], ['canada', 'd'], ['russia', 'a']]

a.sort(key=lambda x: x[0], reverse=true)

結果:
[['usa', 'b'], ['russia', 'a'], ['china', 'c'], ['canada', 'd']]
3: 巢狀字典, 按照字典值(value) 排序
a = [, , , ]

a.sort(key=lambda x: x['letter'], reverse=true)

結果:
[, , , ]
當字典值也是字典時, 這時候會優先按照鍵名排序, 再按照鍵值排序. 例子如下

a = [}, }, }, }]

a.sort(key=lambda x: x['letter'], reverse=true)

結果:
[}, }, }, }]
a = [}, }, }, }]

a.sort(key=lambda x: x['letter'], reverse=true)

結果:
[}, }, }, }]

總結: 

常規查詢均能夠只用lambda實現, 另外還有其他方法, 比如使用operator包中的方法.  本處沒有比較各個方法的效率, python 為2.7.8版本

總的來說, 上面的例子已經很詳盡, 基本覆蓋常見情況, 如有沒有羅列, 請指正, 一起**! 

Python 字典 列表 巢狀 複雜排序大全

解析 使用sorted 方法,排序後的結果為乙個元組.可以字串排序 那數字肯定更沒問題了 a b sorted a.items key lambda x x 0 reverse true 結果 d canada c usa b russia a china a b sorted a.items ke...

字典和列表的巢狀複雜排序大全

字典排序 一 字典排序 解析 使用sorted 方法,排序後的結果為乙個元組.可以字串排序 那數字肯定更沒問題了 1 按照鍵值 value 排序 a b sorted a.items key lambda x x 1 reverse true 結果 c usa b russia a china d ...

python 巢狀列表排序,字典排序

python 巢狀列表排序,字典排序 temp dict temp list test cxiaoxue 19 exiaolu 17 dxiaolin 20 bxiaoli 18 axiaoming 18 fxiaojuan 21 if name main 巢狀列表 多維陣列 排序 print f ...