python中的tuple是乙個非常高效的集合物件,但是我們只能通過索引的方式訪問這個集合中的元素,比如下面的
**:
bob=('bob',30,'male')
print
'representation:',bob
jane=('jane',29,'female')
print
'field by index:',jane[0]
for people in [bob,jane]:
print
"%s is %d years old %s" % people
其中jane[0]就是通過索引訪問的一種方式。
但是,如果tuple中的元素很多的時候,我們操作起來就會比較麻煩,有可能會由於索引錯誤導致出錯。
namedtuple物件就如它的名字所定義的那樣,我們可以給tuple命名,具體用法看下面的例子:
import collections
person = collections.namedtuple('person','name age gender')
print
'type of person:', type(person)
bob = person(name='bob', age=30, gender='male')
print
'representation:', bob
jane = person(name='jane', age=29, gender='female')
print
'field by name:', jane.name
for people in [bob,jane]:
print
"%s is %d years old %s" % people
type of person: 'type'>
representation: person(name='bob', age=30, gender='male')
field by name: jane
bob is
30 years old male
jane is
29 years old female
看下面的**:
import collections
with_class=collections.namedtuple('person','name age class gender',rename=true)
print with_class._fields
two_ages=collections.namedtuple('person','name age gender age',rename=true)
print two_ages._fields其輸出結果為:
('name', 'age', '_2', 'gender')
('name', 'age', 'gender', '_3')
我們使用rename=true的方式開啟重新命名選項。
可以看到第乙個集合中的class被重新命名為 『2′ ; 第二個集合中重複的age被重新命名為 『3′
這是因為namedtuple在重新命名的時候使用了下劃線 _ 加元素所在索引數的方式進行重新命名。
Python namedtuple 具名元組
本文主要介紹namedtuple型別物件的建立以及對應屬性的訪問。namedtuple位於python內建模組collections,屬於tuple子類,類似於c c 中的struct結構體,namedtuple中每個元素具有乙個名稱。namedtuple型別宣告 collections.named...
python namedtuple高階資料型別
t kiosk pts 0 localhost info 因為元組的侷限性 不能為元組內部的資料進行命名,所以往往我們並不知道乙個元組所要表達的意義,所以在這裡引入了 collections.namedtuple 這個工廠函式,來構造乙個帶欄位名的元組。具名元組的例項和普通元組消耗的記憶體一樣多,因...
具名元組 namedtuple
作用 命名元組賦予每個位置乙個含義,提供可讀性和自文件性。它們可以用於任何普通元組,並新增了通過名字獲取值的能力,通過索引值也是可以的。collections.namedtuple typename,field names,rename false,defaults none,module none...