首页 > 编程语言 > 详细

Python 学习 第十四篇:命名元组

时间:2019-04-06 13:17:17      阅读:145      评论:0      收藏:0      [点我收藏+]

Python的元组不能为元组内部的数据进行命名,而 collections.namedtuple 可以来构造一个含有字段名称的元组类,命名元组可以通过字段名来获取元素值:

collections.namedtuple(typename, field_names)

返回一个命名元组类 typename,其中参数的意义如下:

  • typename:类名称
  • field_names: 元组中元素的名称

一,定义命名元组类

命名元组是一个类,有两种方式来定义命名元组:

from collections import namedtuple

User = namedtuple(User, [name, age, id])
User = namedtuple(User, name age id)

实例化命名元组,获得类的一个实例:

user = User(tester, 22, 464643123)

二,命名元组的属性

1,命名元组类的属性和方法

  • 类属性 _fields:包含这个类所有字段名的元组
  • 类方法 _make(iterable):接受一个可迭代对象来生产这个类的实例
# 通过类方法 _make() 和一个list创建一个User对象
user = User._make([Runoob, male, 12])
User._fields

2,命名元组实例的方法

  • 实例方法 _asdict():把具名元组以 collections.OrdereDict 的形式返回,可以利用它来把元组里的信息友好的展示出来
  • 实例方法_replace():用于修改实例的属性
# 获取实例的属性:
print( user.name, user.sex, user.age)

# 使用 _replace() 修改对象属性
user = user._replace(age=22)# User(name=‘user1‘, sex=‘male‘, age=22)

# 使用 _asdict()函数把 User对象转换成字典
print( user._asdict() )
# OrderedDict([(‘name‘, ‘Runoob‘), (‘sex‘, ‘male‘), (‘age‘, 22)])

3,把字典转换为命名元组

可以把Python的字典转换为命名元组

>>> dt={name:b, age:2, id:135}
>>> ut=User(**dt)
## User(name=‘b‘, age=2, id=135)

三,命名元组的用途

命名元组在存储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 namedtuple

namedtuple工厂函数精讲

Python 学习 第十四篇:命名元组

原文:https://www.cnblogs.com/ljhdo/p/10656314.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!