Python 有序字典(OrderedDict)與 普通字典(dict)
阿新 • • 發佈:2019-01-11
Python 的基礎資料型別中的字典型別分為:無序字典 與 有序字典 兩種型別
1.無序字典(普通字典):
my_dict = dict()
my_dict["name"] = "lowman"
my_dict["age"] = 26
my_dict["girl"] = "Tailand"
my_dict["money"] = 80
my_dict["hourse"] = None
for key, value in my_dict.items():
print(key, value)
輸出:
money 80 girl Tailand age 26 hourse None name lowman
可以看見,遍歷一個普通字典,返回的資料和定義字典時的欄位順序是不一致的。
2.有序字典
import collections my_order_dict = collections.OrderedDict()
my_order_dict["name"] = "lowman"
my_order_dict["age"] = 45
my_order_dict["money"] = 998
my_order_dict["hourse"] = None for key, value in my_order_dict.items(): print(key, value)
輸出:
name lowman
age 45
money 998
hourse None
有序字典可以按字典中元素的插入順序來輸出。
注意:
有序字典的作用只是記住元素插入順序並按順序輸出。如果有序字典中的元素一開始就定義好了,後面沒有插入元素這一動作,那麼遍歷有序字典,其輸出結果仍然是無序的,因為缺少了有序插入這一條件,所以此時有序字典就失去了作用,所以有序字典一般用於動態新增並需要按新增順序輸出的時候。
如下面這個列子:
import collections my_order_dict = collections.OrderedDict(name="lowman", age=45, money=998, hourse=None) for key, value in my_order_dict.items(): print(key, value)
輸出:
hourse None age 45 money 998 name lowman
發現輸出還是無序的,因為在定義有序字典的同時也定義了初始值,沒有存在按序新增的操作,所以有序字典是沒有記錄插入欄位的順序,最後遍歷時,得到資料的順序仍然是無序的。