Python 有序字典(OrderedDict)與 普通字典(dict)


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

可以看見,遍歷一個普通字典,返回的數據和定義字典時的字段順序是不一致的。

注意:

  Python3.6 改寫了 dict 的內部算法,Python3.6 版本以后的 dict 是有序的,所以也就無須再關注 dict 順序性的問題

 

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

發現輸出還是無序的,因為在定義有序字典的同時也定義了初始值,沒有存在按序添加的操作,所以有序字典是沒有記錄插入字段的順序,最后遍歷時,得到數據的順序仍然是無序的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM