Python有序字典 OrderedDict

2021-09-10 09:02:27 字數 1576 閱讀 7620

有序字典和普通的dict基本上是相似的,只有一點不同,那就是有序字典中鍵值對的順序會保留插入時的順序。

有序字典的建立方法和普通的dict類似,不過由於多了保留順序的功能,因此在使用可迭代物件建立有序字典時,可以對它先排個序,讓建立出來的字典元素也是有序的:

data =[(

'a',1)

,('b',3)

,('c',2)

]od = collections.ordereddict(

sorted

(data,key=

lambda s:s[0]

))#按資料中key值的大小排序

print

(od)

od = collections.ordereddict(

sorted

(data,key=

lambda s:s[1]

))#按資料中value值的大小排序

print

(od)

得到的結果:

ordereddict([(

'a',1)

,('b',3)

,('c',2)

])ordereddict([(

'a',1)

,('c',2)

,('b',3)

])

這裡使用的sorted函式,它返回對乙個可迭代物件排序後的結果,如果可迭代物件的元素不能直接進行比較(比如元素是乙個listtuple等),則需要指定key函式。

這裡使用lambda表示式lambda s:s[0]lambda s:s[1],分別指定keydata中每個元素(tuple型別)的第乙個元素和第二個元素。

有序字典提供了乙個move_to_end函式,這個函式可以將指定的鍵值對移動到最前面或者最後面,即最左邊或最右邊:

dt = collections.ordereddict(

)dt[

'a']=0

dt['b']=

1dt[

'c']=2

dt.move_to_end(

'b',last =

false

)#將`b`鍵值對移動到最前方

print

(dt)

dt.move_to_end(

'b',last =

true

)#將`b`鍵值對移動到最後方

print

(dt)

得到的結果:

ordereddict([(

'b',1)

,('a',0)

,('c',2)

])ordereddict([(

'a',0)

,('c',2)

,('b',1)

])

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