具名元組
首先元組支持拆包,通過*args的形式
>>>a, b, *test = range(5)
>>>a, b, test
(0, 1, [2, 3, 4])
好的,那接下來,變量test已經有值了,毫無疑問test = [2, 3, 4]
但有時候我們可能需要取到test中某一個元素的值,例如2,當然我們可以選擇列表切片,那有沒有一種更好的辦法呢?
這裏就可以採用具名元組的方式,給test中的每一個字段命名。
import collections
>>>People = collections.namedtuple('Card', ['name', 'age'])
>>>xiaohong = People('xiaohong', '18')
>>>xiaohong
People(name='xiaohong', age='18')
>>>xiaohong.name
xiaohong
>>>xiaohong.age
18
說明:
1.創建具名元組需要兩個參數,一個是類名,一個是類的各個字段的名字。後者可以是由數個字符串組成的可迭代對象。
2.存放在對應字段裏的數據要以一串參數的形式傳入到構造函數中
3.可以通過字段名和位置來獲取一個字段的信息
屬性和方法
# 獲取類包含所有的字段名稱
>>>Poeple._fields
('name', 'age')
>>>xiaoming = ('xiaoming', 19)
# _make接收一個可迭代對象來生成一個類的實例
>>>xiaoming = People._make(xiaoming)
# _asdict()是具名元組以collections.OrderedDict的形式返回,進行更有好的顯示
>>>xiaoming._asdict()
OrderedDict([('name', 'xiaoming'), ('age', 19)])