python 字典排序

2021-07-08 15:13:05 字數 1496 閱讀 1006

prices =
對於這樣乙個字典,如何根據**來對字典進行排序呢?
首先你就會問,python中的字典明明是無序的,何談排序之說?別急,辦法總是有的。
對於這樣乙個字典的排序,直接使用sorted函式肯定是不行的,因為其排序依據是根據keys而非values。若想對它字典進行排序,首先要做的就是將鍵值對反轉,並生成乙個由值鍵對元組構成排序列表。
reverse_prices=sorted(zip(prices.values(),prices.keys()))

緊接著將排序後的鍵值(值鍵)對插到字典中:

new_prices={}

for i,j in reverse_prices:

new_prices[i]=j

print(new_prices)

執行一下看看:

>>> runfile('e:/桌面/**池/untitled0.py', wdir='e:/桌面/**池')

為什麼還是無序的呢?不要忘了,不管你插入順序怎樣,字典永遠是無序的啊。

解決的辦法很簡單:讓new_prices變成有序字典!
from collections import ordereddict

new_prices=ordereddict()

reverse_prices=sorted(zip(prices.values(),prices.keys()))

for i,j in reverse_prices:

new_prices[i]=j

print(new_prices)

這樣一來,列印出的結果終於是有序的了:
>>> runfile('e:/桌面/**池/untitled0.py', wdir='e:/桌面/**池')

ordereddict([(10.75, 'fb'), (37.2, 'hpq'), (45.23, 'acme'), (205.55, 'ibm'), (612.78, 'aapl')])

再引申乙個問題,如果對於這樣乙個字典列表:

rows = [,,

,]

如果我們想根據字典中某一鍵值對的值來進行排序又該怎樣做呢?python的匿名函式可以幫我們很輕鬆地實現:
rows = [,,

,]rows.sort(key=lambda x :x['uid'])

print(rows)

>>> runfile('e:/桌面/**池/untitled0.py', wdir='e:/桌面/**池')

[, , , ]

bingo!

python實現字典排序 python 字典排序

引子 字典,形如 dic 字典中的元素沒有順序,所以dic 0 是有語法錯誤的。並且不可以有重複的鍵值,所以 dic.add c 4後,字典變成 待解決問題 如何根據需要可以根據 鍵 或 鍵值 進行不同順序的排序?函式原型 sorted dic,value,reverse dic為比較函式,valu...

python字典排序

1 準備知識 在python裡,字典dictionary是內建的資料型別,是個無序的儲存結構,每一元素是key value對 如 dict 其中 username 和 database 是key,而 password 和 master 是value,可以通過d key 獲得對應值value的引用,但...

python 字典排序

python 字典 dict 的特點就是無序的,按照鍵 key 來提取相應值 value 如果我們需要字典按值排序的話,那可以用下面的方法來進行 1 下面的是按照value的值從大到小的順序來排序。dic dict sorted dic.iteritems key lambda d d 1 reve...