1. 程式人生 > >python中的命名元組namedtuple

python中的命名元組namedtuple

namedtuple是繼承自tuple的子類。namedtuple建立一個和tuple類似的物件,而且物件擁有可訪問的屬性

可利用collections.namedtuple構建一個簡單的類。

from collections import namedtuple

# 定義一個namedtuple型別User,幷包含name,sex和age屬性。
User = namedtuple('User', ['name', 'sex', 'age'])

# 建立一個User物件
user = User(name='kongxx', sex='male', age=21)

# 也可以通過一個list來建立一個User物件,這裡注意需要使用"_make"方法
user = User._make(['kongxx', 'male', 21])

print(user)
# User(name='user', sex='male', age=21)

# 獲取使用者的屬性
print(user.name)
print(user.sex)
print(user.age)

# 修改物件屬性,注意要使用"_replace"方法
user = user._replace(age=22)
print(user)
# User(name='user', sex='male', age=22)

# 將User物件轉換成字典,注意要使用"_asdict"
print(user._asdict())
# OrderedDict([('name', 'kongxx'), ('sex', 'male'), ('age', 22)])

namedtuple類位於Collections模組中,有了namedtuple後通過屬性訪問資料能夠讓我們的程式碼更加的直觀更好維護,下面就來簡單講解Python程式設計中namedtuple類的用法

Python的Collections模組提供了不少好用的資料容器型別,其中一個精品當屬namedtuple。

namedtuple能夠用來建立類似於元祖的資料型別,除了能夠用索引來訪問資料,能夠迭代,更能夠方便的通過屬性名來訪問資料。

在python中,傳統的tuple類似於陣列,只能通過下標來訪問各個元素,我們還需要註釋每個下標代表什麼資料。通過使用namedtuple,每個元素有了自己的名字,類似於C語言中的struct,這樣資料的意義就可以一目瞭然了。當然,宣告namedtuple是非常簡單方便的。
程式碼示例如下:

類似於tuple,它的屬性也是不可變的:

能夠方便的轉換成OrderedDict:

方法返回多個值得時候,其實更好的是返回namedtuple的結果,這樣程式的邏輯會更加的清晰和好維護:

相比tuple,dictionary,namedtuple略微有點綜合體的意味:直觀、使用方便,牆裂建議大家在合適的時候多用用namedtuple。