在python中,字典型別裡面的元素預設是無序的,但是我們也可以通過collections模組建立有序字典
#-*- coding:utf-8 -*-
#python有序字典需匯入模組collections
import
collections
#通過ordereddict類建立的字典是有序的
dic =collections.ordereddict()
dic['k1
'] = 'v1'
dic['k2
'] = 'v2'
dic['k3
'] = 'v3'
(dic)
"""類似通過列表的方式來實現字典有序
建立列表,新增列表元素k1時,再將k1作為字典的鍵,
因為列表是序的,所以遍歷列表就可有序的遍歷出字典所有的key
"""dic =
li = ['
k1', '
k2', '
k3']
首先我們生成乙個隨機字典
from random importrandint
d= #
第一種方式:利用collections的子類counter從大到小排序
c=counter(d).most_common() #返回乙個列表,按照dict的value從大到小排序
print(c)#
返回值是乙個list,list裡面的元素是tuple的形式
第二種方式:sorted函式
可以對列表進行從小到大排序,對於字典{}dict,sorted函式預設只按照dict的key進行排序,所以要對dict進行調整變形。
1、利用zip函式把dict轉換成乙個列表,列表中每個元素都是乙個tuple,tuple大小比較原理是,先比較第乙個元素,第乙個相同在比較第二個。
2、利用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 + lambda
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])
"""
Python有序字典
最近的django開發中用到了有序字典,所以研究了一下,以下。示例 有序字典和通常字典類似,只是它可以記錄元素插入其中的順序,而一般字典是會以任意的順序迭代的。普通字典 1 d1 2 d1 a a 3 d1 b b 4 d1 c c 5 d1 d d 此時的d1 6 for k,v in d1.it...
python有序字典
最近的django開發中用到了有序字典,所以研究了一下,以下。示例 有序字典和通常字典類似,只是它可以記錄元素插入其中的順序,而一般字典是會以任意的順序迭代的。普通字典 1 d1 2 d1 a a 3 d1 b b 4 d1 c c 5 d1 d d 此時的d1 6 for k,v in d1.it...
python有序字典
最近的django開發中用到了有序字典,所以研究了一下,以下。示例 有序字典和通常字典類似,只是它可以記錄元素插入其中的順序,而一般字典是會以任意的順序迭代的。普通字典 由上面的結果可以看出對普通字典進行遍歷,輸出結果是無序的。下面是有序字典 需要匯入collections包 對比兩種輸出結果,不難...