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...