Python namedtuple 具名元組

2021-08-01 22:53:28 字數 1705 閱讀 6815

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...