今天來講解一下python中的 Namedtuple與OrderedDict 的使用。
一、Namedtuple
我們都知道,在python的數據結構裡,tuple(元組)表示的是不可變集合。比如,一個點的二維坐標可以表示為:
p = (1, 2)
但是,當看到(1,2)的時候,我們很難看得出這個tuple是用來表示一個坐標的。那麼,nametuple就派上了用場:
from collections import namedtuplePoint = namedtuple('Point', ['x', 'y'])p = Point(1, 2)p.xp.y
如果用坐標和半徑表示一個圓,也可以用nametuple來定義:
#namedtuple('名稱', [屬性list]):Circle = namedtuple('Circle', ['x', 'y', 'r'])
Namedtuple,可以讓我們不必通過索引值進行訪問,我們可以把它看作為一個字典通過名字進行訪問,只不過其中的值時不能改變的。它比普通的tuple具有更好的可讀性,使代碼更容易維護。與字典相比,有更加輕量高效。
最後,它還有一個非常好的一點是與tuple是完全兼容。也就是說,我們依然可以用索引去訪問一個namedtuple。
二、OrderedDict
OrderedDict,看字知意,有序字典。
我們學習python,接觸到的字典的概念,字典是無序的,因為它是按照hash來存儲。但是python中有個模塊collections(英文,收集、集合),裡面自帶了一個子類OrderedDict,實現了對字典對象中元素的排序。
上代碼:
輸出:
我們可以看到,同樣是保存了ABC等幾個元素,但是使用OrderedDict會根據放入元素的先後順序進行排序。所以輸出的值是排好序的。