Python namedtuple 具名元組

2021-10-25 07:49:36 字數 3387 閱讀 6402

本文主要介紹namedtuple型別物件的建立以及對應屬性的訪問。

namedtuple位於python內建模組collections,屬於tuple子類,類似於c/c++中的struct結構體,namedtuple中每個元素具有乙個名稱。

namedtuple型別宣告

collections.namedtuple(typename, field_names, verbose=

false

, rename=

false

)

引數意義:

typename:    字串,元組名稱

field_names:由元組中元素的名稱,可選型別為:字串列表或空格分隔開字串或逗號分隔開字串

verbose:        預設就好

rename:        如果元素名稱中含有python的關鍵字,則必須設定為rename=true

後兩個引數採取預設值就好。

宣告乙個namedtuple,此時只是相當於宣告出了一種型別,並未具體建立例項

from collections import namedtuple

student_class = namedtuple(

"student",[

"name"

,"***"

,"age"

])

例項化,此時真正建立出例項化物件

student = student_class(

"alpha"

,"male",15

)print

(student)

輸出結果:student(name=

'alpha'

, ***=

'male'

, age=15)

# 訪問元素

】在建立例項化物件時使用變數名,即student_class,而型別名稱為student,因此可以將變數名和型別名統一,後續使用無需區分。

type

(student)

==> __main__.student

student_class.__mro__ ==

>

(__main__.student,

tuple

,object

)

# 第一種:field_names為空格分隔開字串

student_class = namedtuple(

"student"

,"name *** age"

)# 第二種:field_names為逗號分隔開字串

student_class = namedtuple(

"student"

,"name, ***, age"

)# 第三章:field_names為字串列表

student_class = namedtuple(

"student",[

"name"

,"***"

,"age"

])

主要包括:

_fields:                返回乙個元組,包含所有欄位的名稱

_make(iterable):  傳入可迭代物件建立具名元組例項化物件

_replace(**kwds):修改具名元組中某乙個元素值

_asdict():              將具名元組物件轉換成ordereddict

以具體例項說明

(1)建立具名元組物件

in [1]

:from collections import namedtuple

in [2]

: student_class = namedtuple(

"student",[

"name"

,"***"

,"age"])

in [3]

: student = student_class(name=

"alpha"

, ***=

"male"

, age=

20)

(2)_fields屬性: 返回乙個元組,包含所有的欄位名稱
in [4]

:type

(student._fields)

out[4]

:tuple

in [5]

: student._fields

out[5]

:('name'

,'***'

,'age'

)

(3)_make(iterable): 傳入可迭代物件建立具名元組例項化物件
in [6]

: student = student_class._make(

["beta"

,"female",21

])in [7]

: student

out[7]

: student(name=

'beta'

, ***=

'female'

, age=

21)

(4)_replace(**kwds):修改具名元組中某乙個元素值
in [8]

: student = student._replace(age=50)

in [9]

: student

out[9]

: student(name=

'beta'

, ***=

'female'

, age=

50)

(5)_asdict():將具名元組物件轉換成ordereddict
in [10]

: student.as_dict(

)out[10]

: ordereddict([(

'name'

,'beta'),

('***'

,'female'),

('age',50)])

Python namedtuple 具名元組

python中的tuple是乙個非常高效的集合物件,但是我們只能通過索引的方式訪問這個集合中的元素,比如下面的 bob bob 30,male print representation bob jane jane 29,female print field by index jane 0 for p...

python namedtuple高階資料型別

t kiosk pts 0 localhost info 因為元組的侷限性 不能為元組內部的資料進行命名,所以往往我們並不知道乙個元組所要表達的意義,所以在這裡引入了 collections.namedtuple 這個工廠函式,來構造乙個帶欄位名的元組。具名元組的例項和普通元組消耗的記憶體一樣多,因...

具名元組 namedtuple

作用 命名元組賦予每個位置乙個含義,提供可讀性和自文件性。它們可以用於任何普通元組,並新增了通過名字獲取值的能力,通過索引值也是可以的。collections.namedtuple typename,field names,rename false,defaults none,module none...