avatar

RWO.cc

读一次写一次

  • 首页
  • 搭建手册
  • 笔记
  • 短视频
  • 关于
  • 🌈200粉丝🌈
Home Python中的具名元组(NamedTuple) 扩展
文章

Python中的具名元组(NamedTuple) 扩展

Posted 2024-10-11 Updated 2024-10- 9
By RWO.
6~8 min read

具名元组(NamedTuple)是 Python collections 模块中的一个工厂函数,用于创建类似于字典的不可变对象,具有字段名称和索引访问的功能。它们的使用既方便又高效,特别适合需要用名称访问数据的场景。

定义和使用

1. 定义具名元组

使用 namedtuple() 创建一个具名元组。

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])

2. 实例化具名元组

可以像类一样创建具名元组的实例。

p = Point(11, 22)

3. 访问字段

可以通过名称或索引访问字段。

print(p.x)  # 输出: 11
print(p[1]) # 输出: 22

优势

  • 可读性高:字段名称使代码更易读。
  • 不可变性:像普通元组一样,具名元组也是不可变的。
  • 内存效率:相比字典,占用内存更少。

示例

以下是一个具体的示例,展示了如何定义和使用具名元组:

from collections import namedtuple

# 创建具名元组类
Person = namedtuple('Person', ['name', 'age', 'gender'])

# 创建实例
person = Person(name='John', age=30, gender='Male')

# 访问字段
print(person.name)   # 输出: John
print(person.age)    # 输出: 30
print(person.gender) # 输出: Male

具名元组在需要结构化、可读性高的数据存储和访问时特别有用。

扩展功能

_fields 属性

_fields 属性返回具名元组的所有字段名称。

print(person._fields)  # 输出: ('name', 'age', 'gender')

_asdict 方法

_asdict 方法将具名元组转换为字典。

print(person._asdict())  # 输出: {'name': 'John', 'age': 30, 'gender': 'Male'}

_replace 方法

_replace 方法创建一个新的具名元组,替换指定字段的值。

print(person.age)  # 输出: 30
person = person._replace(age=40)
print(person._asdict())  # 输出: {'name': 'John', 'age': 40, 'gender': 'Male'}
print(person.age)  # 输出: 40

代码示例

from collections import namedtuple

# 创建一个名为 'Person' 的具名元组类
Person = namedtuple('Person', ['name', 'age', 'gender'])

# 创建一个 Person 对象
person = Person(name='Bob', age=30, gender='male')

# 访问字段
print(person.name)   # 输出: Bob
print(person.age)    # 输出: 30
print(person.gender) # 输出: male

# 通过索引访问
print(person[0])  # 输出: Bob
print(person[1])  # 输出: 30
print(person[2])  # 输出: male

# 获取所有字段名称
print(person._fields)  # 输出: ('name', 'age', 'gender')

# 将具名元组转换为字典
print(person._asdict())  # 输出: {'name': 'Bob', 'age': 30, 'gender': 'male'}
print(type(person._asdict()))  # 输出: <class 'dict'>

# 使用 _replace 方法替换字段值
print(person.age)  # 输出: 30
person = person._replace(age=40)
print(person._asdict())  # 输出: {'name': 'Bob', 'age': 40, 'gender': 'male'}
print(person.age)  # 输出: 40

具名元组提供了一种简单而高效的方式来创建结构化数据,并且使用起来非常方便。理解并使用这些特性,可以使代码更具可读性和维护性。

短视频
每日一点 短视频 Python
License:  CC BY 4.0
Share

Further Reading

Nov 3, 2024

什么是 python 的闭包

在 Python 中,闭包(Closure)是一种函数对象,它不仅包含了函数的代码,还包含了函数创建时的环境变量。这意味着闭包可以“记住”其外部作用域中的变量,即使在外部作用域已经结束后,闭包仍然可以访问这些变量。 函数可以访问他被创建时所处的上下文环境,这被称为闭包。 闭包的基本特征 嵌套函数:闭

Nov 2, 2024

使用argparse模块解析命令行参数

在 Python 中,argparse 模块用于解析命令行参数,使得脚本可以更灵活地接受用户输入。以下是如何使用 argparse 模块解析命令行参数的详细介绍和示例。 基本用法 示例:简单的命令行参数解析 首先,创建一个简单的脚本来解析命令行参数。我们将创建一个脚本,该脚本接受两个整数并打印它们的

Nov 1, 2024

Python中的二维码生成与解析(花里胡哨)

如何使用 qrcode 库生成各种有趣的二维码,包括彩色二维码、带 Logo 的二维码和动态 GIF 二维码。下面,我们将逐步介绍这些功能。 Qrcode 库简介 qrcode 库是一个强大的 Python 工具,用于生成二维码。除了基本的二维码,它还支持自定义功能,如颜色变化、样式设计和动画效果。

OLDER

re 模块中 split()、sub()、subn() 方法有什么作用?

NEWER

Python中的zip函数,我想同时遍历几个列表怎么办?

Recently Updated

  • 什么是 python 的闭包
  • 使用argparse模块解析命令行参数
  • Python中的二维码生成与解析(花里胡哨)
  • Python中的二维码生成与解析(基础使用)
  • 使用platform模块获取系统信息

Trending Tags

学习 Git 工具 SQL docker-compose 每日一点 快捷键 Flink fastapi Windows

Contents

©2025 RWO.cc. Some rights reserved.

Using the Halo theme Chirpy