Python之namedtuple(具名元組)簡介

(本文大部分內容來源於此鏈接的文章,我對部分內容做了一些改動,方便自己日後複習,若有侵權,請聯繫我,我會將此文刪除,謝謝)

collections模塊的namedtuple函數用來構造一個帶名稱的元組。具名元組的實例與普通元組的實例相比,它們消耗的內存一樣多。


使用格式

collections.namedtuple(typename, field_names, verbose=False, rename=False)

參數介紹

  • typename:元組名稱
  • field_names:(具名元組中的)元素名稱
  • verbose:不用管
  • rename:默認爲Fasle。若元素名稱中含有Python的關鍵字,則需設置爲rename=True

返回值

返回一個具名元組子類typename。


下面代碼爲【定義一個具名元組及創建一個具名元組的實例】的一個例子:

>>> from collections import namedtuple
>>> User = namedtuple('User', ['name', 'age', 'id']) # 第二個參數也可以爲字符串形式->'name age id'
>>> user = User('xw', '23', '1501144231')
>>> user
User(name='xw', age='23', id='1501144231')
>>> user.age
'23'
>>> user.id
'1501144231'
>>> user[1]
'23'
>>> user[2]
'1501144231'

從上述代碼中可以看出定義一個具名元組的規則:創建一個具名元組,需要兩個參數:【類名】和【元組中各個元素的名稱】,後者可以是【由多個字符串組成的可迭代對象】或【由空格分隔開的字段名組成的字符串】。具名元組可以通過字段名或位置來獲取一個字段的信息。


具名元組的特有屬性

  • 類屬性_fields:包含具名元組類所有字段名的元組
  • 類方法_make(iterable):接受一個可迭代對象iterable來生成一個具名元組的實例
  • 實例方法_asdict():將具名元組以字典dict的形式返回,這樣可以將具名元組的信息友好的展示出來
>>> from collections import namedtuple
>>> User = namedtuple('User', ['name', 'sex', 'age']) # 定義一個名爲User的具名元組
>>> user = User('xw', 'male', '23')
>>> user._fields 
('name', 'sex', 'age')
>>> user1 = User._make(['xw', 'male', '23']) # 通過"_make"方法,使用列表來創建一個具名元組User的實例
>>> user1
User(name='xw', sex='male', age='23')
>>> user.name # 獲取具名元組對象的屬性
'xw'
>>> user.sex # 獲取具名元組對象的屬性
'male'
>>> user = user._replace(age=24) # 使用"_replace"方法來修改對象屬性,使用關鍵字參數修改
>>> user
User(name='xw', sex='male', age=24)
>>> user._asdict() # 使用"_asdict"將具名元組轉換爲普通字典
{'name': 'xw', 'sex': 'male', 'age': 24}
```ju
(本文大部分內容來源於[此鏈接](https://www.runoob.com/note/25726)的文章,我對部分內容做了一些改動,方便自己日後複習,若有侵權,請聯繫我,我會將此文刪除,謝謝)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章