python命名元组
生活随笔
收集整理的這篇文章主要介紹了
python命名元组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python的元組不能為元組內部的數據進行命名,而 collections.namedtuple 可以來構造一個含有字段名稱的元組類,命名元組可以通過逗號+字段名來獲取元素值:
collections.namedtuple(typename, field_names)返回一個命名元組類 typename,其中參數的意義如下:
- typename:類名稱
- field_names: 元組中元素的名稱
一,定義命名元組類
命名元組是一個類,有兩種方式來定義命名元組:
from collections import namedtupleUser = namedtuple('User', ['name', 'age', 'id']) User = namedtuple('User', 'name age id')實例化命名元組,獲得類的一個實例:
user = User('tester', '22', '464643123')二,命名元組的屬性和方法
1,命名元組類的屬性和方法
- 類屬性 _fields:包含這個類所有字段名的元組
- 類方法 _make(iterable):接受一個可迭代對象來生產這個類的實例
2,命名元組實例的方法
- 實例方法 _asdict():把具名元組以 collections.OrdereDict 的形式返回,可以利用它來把元組里的信息友好的展示出來
- 實例方法_replace():用于修改實例的屬性
三,把字典或列表轉換為命名元組
1,把字典轉換為命名元組
可以把Python的字典轉換為命名元組:
>>> dt={'name':'b', 'age':2, 'id':135} >>> ut=User(**dt) ## User(name='b', age=2, id=135)2,把列表轉換為命名元組
使用map函數,調用命名元組類的_make函數,把列表轉換為命名元組的列表
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' User = namedtuple('User', 'name age id') list_users=map(User._make,[('u1',23,1001),('u2',21,1002),('u3',25,1003),])3,把命名元組轉換為列表
也可以把命名元組轉換為list,列表中只有值,而沒有字段名稱:
>>> list(ut) ['b', '2', 135]四,訪問命名元組
通過逗號運算符和屬性名來訪問元組字段的值,例如,ut是命名元組的對象,name是對象的屬性,可以通過以下方式訪問元組的name屬性:
ut.name五,命名元組的用途
命名元組在存儲csv或者sqlite3返回數據的時候特別有用
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')import csv for emp in map(EmployeeRecord._make, csv.reader(open("employees.csv", "rb"))):print(emp.name, emp.title)import sqlite3 conn = sqlite3.connect('/companydata') cursor = conn.cursor() cursor.execute('SELECT name, age, title, department, paygrade FROM employees') for emp in map(EmployeeRecord._make, cursor.fetchall()):print(emp.name, emp.title)總結
以上是生活随笔為你收集整理的python命名元组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 中函数(function)
- 下一篇: python教程:文件读写