本文主要介紹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():將具名元組物件轉換成ordereddictin [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...