python元組的公升級版本 -- namedtuple(具名元組)
因為元組的侷限性:不能為元組內部的資料進行命名,所以往往我們並不知道乙個元組所要表達的意義,所以在這裡引入了 collections.namedtuple 這個工廠函式,來構造乙個帶欄位名的元組。具名元組的例項和普通元組消耗的記憶體一樣多,因為欄位名都被存在對應的類裡面。這個類跟普通的物件例項比起來也要小一些,因為 python 不會用 __dict__ 來存放這些例項的屬性。
namedtuple 物件的定義如以下格式:
collections.namedtuple(typename, field_names, verbose=false, rename=false)
返回乙個具名元組子類 typename,其中引數的意義如下:
typename:元組名稱
field_names: 元組中元素的名稱
rename: 如果元素名稱中含有 python 的關鍵字,則必須設定為 rename=true
verbose: 預設就好
下面來看看宣告乙個具名元組及其例項化的方法:
import collections
# 兩種方法來給 namedtuple 定義方法名
#user = collections.namedtuple('user', ['name', 'age', 'id'])
user = collections.namedtuple('user', 'name age id')
user = user('tester', '22', '464643123')
print(user)
collections.namedtuple('user', 'name age id') 建立乙個具名元組,需要兩個引數,乙個是類名,另乙個是類的各個欄位名。後者可以是有多個字串組成的可迭代物件,或者是有空格分隔開的欄位名組成的字串(比如本示例)。具名元組可以通過欄位名或者位置來獲取乙個欄位的資訊。
輸出結果:
user(name='tester', age='22', id='464643123')
具名元組的特有屬性:
類屬性 _fields:包含這個類所有欄位名的元組
類方法 _make(iterable):接受乙個可迭代物件來生產這個類的例項
例項方法 _asdict():把具名元組以 collections.orderedict 的形式返回,可以利用它來把元組裡的資訊友好的展示出來
from collections import namedtuple
# 定義乙個namedtuple型別user,幷包含name,***和age屬性。
user = namedtuple('user', ['name', '***', 'age'])
# 建立乙個user物件
user = user(name='runoob', ***='male', age=12)
# 獲取所有欄位名
print( user._fields )
# 也可以通過乙個list來建立乙個user物件,這裡注意需要使用"_make"方法
user = user._make(['runoob', 'male', 12])
print( user )
# user(name='user1', ***='male', age=12)
# 獲取使用者的屬性
print( user.name )
print( user.*** )
print( user.age )
# 修改物件屬性,注意要使用"_replace"方法
user = user._replace(age=22)
print( user )
# user(name='user1', ***='male', age=21)
# 將user物件轉換成字典,注意要使用"_asdict"
print( user._asdict() )
# ordereddict([('name', 'runoob'), ('***', 'male'), ('age', 22)])
以上例項輸出結果為:
('name', '***', 'age')
user(name='runoob', ***='male', age=12)
runoob
male
user(name='runoob', ***='male', age=22)
ordereddict([('name', 'runoob'), ('***', 'male'), ('age', 22)])
mqslllduoduo
mqslllduoduo
494***[email protected]年前 (2018-03-30)
菜鳥學python文件 菜鳥學習python筆記
1.模組 三種呼叫方法 1.在vim寫的乙個python的檔案 運用import 匯入,就可以在互動模式的直接進行呼叫 2.呼叫模組裡面的某個函式 from 模組名字 in 函式名字 3.將模組名字變短進行呼叫 import 模組原名 as 新名字 2.基於python開發的東西存放目錄 usr l...
python3菜鳥教程100例 Python3
python3 字典 字典是另一種可變容器模型,且可儲存任意型別物件。字典的每個鍵值 key value 對用冒號 分割,每個對之間用逗號 分割,整個字典包括在花括號 中 格式如下所示 鍵必須是唯一的,但值則不必。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字。乙個簡單的字典例項 也可如此建...
Java菜鳥學習日記30
bootstrap 響應式按鈕 表現效果 手機上全寬,桌面上2列寬 原理 btn block 會將按鈕變成全寬,但桌面上 col sm 2 生效,按鈕被限制在2列寬中,手機上col sm 2失效 在自己的專案中整合第三方外掛程式或功能 找到所有的依賴項 css js jar 配置檔案 並且注意依賴項...