python字典按值的大小排序怎么操作?一起來看看小編今天的分享吧!
python字典按值的大小排序可以通過sorted函數進行操作。
操作方法:
首先生成一個隨機字典。
from?random?import?randint d={x:randint(60,99)?for?x?in?"abcdefg"}???#?{'a':?62,?'b':?97,?'c':?87,?'d':?68,?'e':?91,?'f':?76,?'g':?88}
總體思路:sorted函數可以對列表[]進行從小到大排序,對于字典{}dict,sorted函數只比較dict的key進行排序,所以要對dict進行調整變形。1、利用zip函數把dict轉換成一個列表,列表中每個元素都是一個tuple,tuple大小比較原理是,先比較第一個元素,第一個相同在比較第二個。2、利用sorted函數對轉換后的列表進行排序。
z=zip(d.values(),d.keys())???#[(62,?'a'),?(74,?'b'),?(83,?'c'),?(96,?'d'),?(75,?'e'),?(79,?'f'),?(83,?'g')],
然后對這個列表進行sorted排序
sorted(z)
另外,[(a1,b1,c1),(a2,b2,c2),(a3,b3,c3),(a4,b4,c4)……] ???sorted函數可以對這種集合進行指定元素排序。
sorted(d.items(),key=lambda?x:x[1])
第一個從參數是需要排序的列表,第二個參數是指定key(列表中每一項的第幾個元素)來進行排序。解釋這句代碼:d.items()返回的是一個列表 ?[('a', 74), ('b', 90), ('c', 84), ('d', 85), ('e', 64), ('f', 66), ('g', 88)]sorted會對d.items()這個list進行遍歷,把list中的每一個元素,也就是每一個tuple()當做x傳入匿名函數lambda x:x[1],函數返回值為x[1],也就是key=x[1]=tuple()[1]=('a', 74)[1],也就是說按照里表中每個項的第二個元素進行排序(第一個是想x[0]).
以上就是小編今天的分享了,希望可以幫助到大家。