python基礎之Dict與OrderedDict

2021-10-08 22:14:10 字數 3392 閱讀 1556

本文翻譯自

ordereddict是dict的乙個子類,dict與ordereddict之間的唯一區別是:ordereddict會根據插入的順序來儲存元素,而dict可能保持這種順序也可能不保持插入順序。

要使用ordereddict需要匯入collections模組。

import collections
下面我們通過幾個例子來看一下dict和ordereddict的區別。

我們通過給dict和ordereddict插入一些鍵和值來建立物件。我們可以看到在dict中的順序與插入的順序是不同的。但是ordereddict的順序是固定的。

example code

import collections

#create normal dict

my_dict = {}

my_dict['aa'] = 11

my_dict['bb'] = 22

my_dict['cc'] = 33

my_dict['dd'] = 44

for item in my_dict.items():

print(item)

print()

#create ordered dict

my_ord_dict = collections.ordereddict()

my_ord_dict['aa'] = 11

my_ord_dict['bb'] = 22

my_ord_dict['cc'] = 33

my_ord_dict['dd'] = 44

for item in my_ord_dict.items():

print(item)

output:

('aa', 11)

('cc', 33)

('bb', 22)

('dd', 44)

('aa', 11)

('bb', 22)

('cc', 33)

('dd', 44)

當乙個鍵的值被修改了,ordereddict中鍵的順序不會變化。但是dict不能夠保證鍵的順序會不會變化。

example code

import collections

#create normal dict

my_dict = {}

my_dict['aa'] = 11

my_dict['bb'] = 22

my_dict['cc'] = 33

my_dict['dd'] = 44

for item in my_dict.items():

print(item)

#change the value for key bb

my_dict['bb'] = 100

print('after changing in dict')

for item in my_dict.items():

print(item)

print()

#create ordered dict

my_ord_dict = collections.ordereddict()

my_ord_dict['aa'] = 11

my_ord_dict['bb'] = 22

my_ord_dict['cc'] = 33

my_ord_dict['dd'] = 44

for item in my_ord_dict.items():

print(item)

#change the value for key bb

my_ord_dict['bb'] = 100

print('after changing in ordered dict')

for item in my_ord_dict.items():

print(item)

output

('aa', 11)

('bb', 22)

('cc', 33)

('dd', 44)

after changing in dict

('aa', 11)

('cc', 33)

('dd', 44)

('bb', 100)

('aa', 11)

('bb', 22)

('cc', 33)

('dd', 44)

after changing in ordered dict

('aa', 11)

('bb', 100)

('cc', 33)

('dd', 44)

當ordereddict刪除乙個元素,然後再重新插入時,該元素會被放到ordereddict的最後。雖然orderedict是保持順序的,但是當執行刪除的時候對應的排序資訊也丟失了,重新插入的時候當作乙個新元素來處理。

example code

import collections

#create ordered dict

my_ord_dict = collections.ordereddict()

my_ord_dict['aa'] = 11

my_ord_dict['bb'] = 22

my_ord_dict['cc'] = 33

my_ord_dict['dd'] = 44

for item in my_ord_dict.items():

print(item)

#delete item in key bb

my_ord_dict.pop('bb')

print('after deleting')

for item in my_ord_dict.items():

print(item)

#re-inserting item

my_ord_dict['bb'] = 22

print('after re-inserting')

for item in my_ord_dict.items():

print(item)

output

('aa', 11)

('bb', 22)

('cc', 33)

('dd', 44)

after deleting

('aa', 11)

('cc', 33)

('dd', 44)

after re-inserting

('aa', 11)

('cc', 33)

('dd', 44)

('bb', 22)

Python基礎之字典dict

字典的特性,鍵值對出現 字典的定義 字典的key不可重複,如果key重複的話,預設最後乙個元素新增到字典中,多個元素之間用逗號分割。字典是無序的 定義乙個字典 例 dic 字典的常用方法 fromkeys 引數是乙個可迭代型別,把每乙個迭代物件變成字典的key,value預設為none 可以修改 例...

Python基礎篇之dict

我們已經知道,list 和 tuple 可以用來表示順序集合,例如,班裡同學的名字 adam lisa bart 或者考試的成績列表 95,85,59 但是,要根據名字找到對應的成績,用兩個 list 表示就不方便。如果把名字和分數關聯起來,組成類似的查詢表 adam 95 lisa 85 bart...

python基礎之字典 dict

字典 dict 是一種key value 字典是無序的,不能像str list 一樣 通過index查詢資料 字典內可以迴圈巢狀list dict等 列表key是唯一的,值不限制 學號 姓名 info 新增 修改 info 004 1 查詢print info.get 001 通過key獲取valu...