Python基础教程:命名元组

Python基础教程:命名元组,第1张

概述Python的元组不能为元组内部的数据进行命名,而collections.namedtuple可以来构造一个含有字段名称的元组类,命名元组可以通过逗号+字段名来获取元素值:collections.namedtuple(typename,field_names)返回一个命名元组类typename,其中参数的意义如下:typename:类名称field_n

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):接受一个可迭代对象来生产这个类的实例
# 通过类方法 _make() 和一个List创建一个User对象user = User._make(['Runoob', 'male', 12])User._fIElds

2,命名元组实例的方法

实例方法 _asdict():把具名元组以 collections.OrdereDict 的形式返回,可以利用它来把元组里的信息友好的展示出来实例方法_replace():用于修改实例的属性
'''遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和pdf电子书!'''# 获取实例的属性: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)])
三,把字典或列表转换为命名元组

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

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

'''遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和pdf电子书!'''>>> dt={'name':'b', 'age':2, 'ID':135}>>> ut=User(**dt)## User(name='b', age=2, ID=135)

2,把列表转换为命名元组

使用map函数,调用命名元组类的_make函数,把列表转换为命名元组的列表

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 csvfor emp in map(EmployeeRecord._make, csv.reader(open("employees.csv", "rb"))):    print(emp.name, emp.Title)import sqlite3conn = 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基础教程:命名元组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1188213.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存