Python 学习 第12篇:命名元组

liftword4周前 (04-03)技术文章3

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)])

三,把字典或列表转换为命名元组

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

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

>>> 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 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 中的一种内置数据结构,可用于存储项目的有序集合。与列表类似,元组可以在单个实体中保存多种数据类型,但它们是不可变的,这意味着一旦创建,就无法修改、添加或删除元素。此属性使 Tup...

Python的元组,没想象的那么简单

来源:AI入门学习作者:小伍哥Python的元组与列表类似,元组一旦创建,元组中的数据一旦确立就不能改变,不能对元组中中的元素进行增删改操作,因此元组没有增加元素append、更新元素update、弹...

python序列之元组详解

与列表类似,元组也是由任意元素组成的序列,不同的是元组是不可变的,意味着一旦元组被定义将无法再进行修改操作,因此它显得比较古板。元组的创建:可以使用() 创建元组empty = () #定义了一个空元...

3分钟掌握Python 中的元组

元组是 Python 中一种重要的数据类型,它允许您存储值集合,类似于列表。但是,元组与列表的不同之处在于它们是不可变的,这意味着元组一旦创建,就无法修改。2. 语法在 Python 中,元组是通过在...

Python中的元组详解

1.介绍元组是Python中一种重要的数据类型,它允许存储值的集合,类似于列表。然而,元组与列表的不同之处在于它们是不可变的,这意味着一旦创建了元组,就不能修改它。2.语法在Python中,元组是通过...

Python 元组详解

1. 理解Python中的元组1.1 什么是元组?Python 中的元组是不可变的、有序的元素集合。与列表不同,元组一旦创建就无法修改,这使得它们适合数据完整性至关重要的情况。1.2 创建元组在 Py...