在Python中,字典類型裏面的元素默認是無序的,可是咱們也能夠經過collections模塊建立有序字典python
# -*- coding:utf-8 -*- # python有序字典需導入模塊collections import collections # 經過OrderedDict類建立的字典是有序的 dic = collections.OrderedDict() dic['k1'] = 'v1' dic['k2'] = 'v2' dic['k3'] = 'v3' print(dic) """ 相似經過列表的方式來實現字典有序 建立列表,添加列表元素k1時,再將k1做爲字典的鍵, 由於列表是序的,因此遍歷列表就可有序的遍歷出字典全部的key """ dic = {'K1': 'V1', 'K2': 'V2', 'K3': 'V3'} li = ['k1', 'k2', 'k3']
首先咱們生成一個隨機字典dom
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}
第一種方式:利用collections的子類Counter從大到小排序函數
c=Counter(d).most_common() #返回一個列表,按照dict的value從大到小排序 print(c)# 返回值是一個list,list裏面的元素是tuple的形式
第二種方式:sorted函數spa
能夠對列表[]進行從小到大排序,對於字典{}dict,sorted函數默認只按照dict的key進行排序,因此要對dict進行調整變形。 code
一、利用zip函數把dict轉換成一個列表,列表中每一個元素都是一個tuple,tuple大小比較原理是,先比較第一個元素,第一個相同在比較第二個。 blog
二、利用sorted函數對轉換後的列表進行排序。排序
z=zip(d.values(),d.keys()) #[(62, 'a'), (97, 'b'), (87, 'c'), (68, 'd'), (91, 'e'), (76, 'f'), (88, 'g')],而後對這個列表進行sorted排序 sorted(z)
第三種方式:sorted + lambdaip
sorted函數能夠這種集合進行指定元素排序。 utf-8
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]) """