簡單講解Python編程中namedtuple類的用法
Python的Collections模塊提供了不少好用的數(shù)據(jù)容器類型,其中一個精品當屬namedtuple。
namedtuple能夠用來創(chuàng)建類似于元祖的數(shù)據(jù)類型,除了能夠用索引來訪問數(shù)據(jù),能夠迭代,更能夠方便的通過屬性名來訪問數(shù)據(jù)。
在python中,傳統(tǒng)的tuple類似于數(shù)組,只能通過下標來訪問各個元素,我們還需要注釋每個下標代表什么數(shù)據(jù)。通過使用namedtuple,每個元素有了自己的名字,類似于C語言中的struct,這樣數(shù)據(jù)的意義就可以一目了然了。當然,聲明namedtuple是非常簡單方便的。
代碼示例如下:
from collections import namedtuple
Friend=namedtuple("Friend",['name','age','email'])
f1=Friend('xiaowang',33,'xiaowang@163.com')
print(f1)
print(f1.age)
print(f1.email)
f2=Friend(name='xiaozhang',email='xiaozhang@sina.com',age=30)
print(f2)
name,age,email=f2
print(name,age,email)
類似于tuple,它的屬性也是不可變的:
>>> big_yellow.age += 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: can't set attribute
能夠方便的轉(zhuǎn)換成OrderedDict:
>>> big_yellow._asdict()
OrderedDict([('name', 'big_yellow'), ('age', 3), ('type', 'dog')])
方法返回多個值得時候,其實更好的是返回namedtuple的結(jié)果,這樣程序的邏輯會更加的清晰和好維護:
>>> from collections import namedtuple
>>> def get_name():
... name = namedtuple("name", ["first", "middle", "last"])
... return name("John", "You know nothing", "Snow")
...
>>> name = get_name()
>>> print name.first, name.middle, name.last
John You know nothing Snow
相比tuple,dictionary,namedtuple略微有點綜合體的意味:直觀、使用方便,墻裂建議大家在合適的時候多用用namedtuple。
相關(guān)文章
python網(wǎng)絡(luò)編程學(xué)習筆記(三):socket網(wǎng)絡(luò)服務(wù)器
服務(wù)器和客戶端程序很類似,上節(jié)學(xué)習了客戶端程序,這一節(jié)將仔細學(xué)習一下利用socket建立TCP服務(wù)器和UDP服務(wù)器2014-06-06
pycharm中:OSError:[WinError?1455]頁面文件太小無法完成操作問題的多種解決方法
這篇文章主要給大家介紹了關(guān)于pycharm中:OSError:[WinError?1455]頁面文件太小無法完成操作問題的多種徹底解決方法,文中通過圖文介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下2023-02-02
詳解一種用django_cache實現(xiàn)分布式鎖的方式
這篇文章主要介紹了詳解一種用django_cache實現(xiàn)分布式鎖的方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2019-09-09
詳解python數(shù)據(jù)結(jié)構(gòu)之隊列Queue
這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)之隊列Queue,文中有非常詳細的代碼示例,對正在學(xué)習python的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05

