python建立有序字典及字典按照值的大小進行排序

2022-04-10 19:57:23 字數 1709 閱讀 9280

在python中,字典型別裡面的元素預設是無序的,但是我們也可以通過collections模組建立有序字典

#

-*- 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 =

li = ['

k1', '

k2', '

k3']

首先我們生成乙個隨機字典

from random import

randint

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包 對比兩種輸出結果,不難...