簡(jiǎn)單講解Python編程中namedtuple類的用法
Python的Collections模塊提供了不少好用的數(shù)據(jù)容器類型,其中一個(gè)精品當(dāng)屬namedtuple。
namedtuple能夠用來創(chuàng)建類似于元祖的數(shù)據(jù)類型,除了能夠用索引來訪問數(shù)據(jù),能夠迭代,更能夠方便的通過屬性名來訪問數(shù)據(jù)。
在python中,傳統(tǒng)的tuple類似于數(shù)組,只能通過下標(biāo)來訪問各個(gè)元素,我們還需要注釋每個(gè)下標(biāo)代表什么數(shù)據(jù)。通過使用namedtuple,每個(gè)元素有了自己的名字,類似于C語言中的struct,這樣數(shù)據(jù)的意義就可以一目了然了。當(dāng)然,聲明namedtuple是非常簡(jiǎn)單方便的。
代碼示例如下:
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')])
方法返回多個(gè)值得時(shí)候,其實(shí)更好的是返回namedtuple的結(jié)果,這樣程序的邏輯會(huì)更加的清晰和好維護(hù):
>>> 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略微有點(diǎn)綜合體的意味:直觀、使用方便,墻裂建議大家在合適的時(shí)候多用用namedtuple。
相關(guān)文章
python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(三):socket網(wǎng)絡(luò)服務(wù)器
服務(wù)器和客戶端程序很類似,上節(jié)學(xué)習(xí)了客戶端程序,這一節(jié)將仔細(xì)學(xué)習(xí)一下利用socket建立TCP服務(wù)器和UDP服務(wù)器2014-06-06
pycharm中:OSError:[WinError?1455]頁面文件太小無法完成操作問題的多種解決方法
這篇文章主要給大家介紹了關(guān)于pycharm中:OSError:[WinError?1455]頁面文件太小無法完成操作問題的多種徹底解決方法,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02
詳解一種用django_cache實(shí)現(xiàn)分布式鎖的方式
這篇文章主要介紹了詳解一種用django_cache實(shí)現(xiàn)分布式鎖的方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
python單星號(hào)(*)與雙星號(hào)(**)使用示例demo
這篇文章詳細(xì)介紹了Python中*與**操作符的使用場(chǎng)景及注意事項(xiàng),并通過示例代碼展示了它們?cè)诤瘮?shù)形參和實(shí)參、序列解包以及函數(shù)參數(shù)順序中的應(yīng)用,需要的朋友可以參考下2024-12-12
詳解python數(shù)據(jù)結(jié)構(gòu)之隊(duì)列Queue
這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)之隊(duì)列Queue,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05
詳解Pytorch顯存動(dòng)態(tài)分配規(guī)律探索
這篇文章主要介紹了Pytorch顯存動(dòng)態(tài)分配規(guī)律探索,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11

