python具名元组(namedtuple)的具体使用

yizhihongxing

当我们需要定义一个简单的类来存储数据时,Python 的 namedtuple 是一种很好的选择。namedtuple 可以看作是一个不可变的类,可以按名称来访问元组的各个元素,从而避免了索引数字所带来的混淆和错误。

使用 namedtuples 的主要优点是代码的可读性和设计的整洁性。因为它们是不可变的,所以它们适用于作为全局常量的对象或数据记录的值。

下面是具体的使用攻略:

1. 创建 namedtuple

首先,我们需要导入 namedtuple:

from collections import namedtuple

接下来,我们可以用 namedtuple 创建一个新的对象,实例化它并将其分配给变量。namedtuples 需要两个参数:一个是名称,另一个是一个元组,元组中包含各个元素的名称。例如,我们可以从我的网站中创建一个 namedtuples:

Color = namedtuple('Color', ['red', 'green', 'blue'])
c = Color(25, 50, 75)

上述代码就创建了一个名为 "Color" 的 named tuple,包含三个域 red、green 和 blue,并将变量 c 实例化为 Color 类型的对象。

2. 访问 namedtuple

访问 namedtuple 有两种方法:

(1) 通过索引访问

可以通过索引来访问 namedtuple。例如,我们可以使用以下方式来访问命名元组 c 的第一个元素 red:

print(c[0]) #输出 25

(2) 通过名称访问

我们可以使用名称来直接访问 namedtuple 的元素。例如,我们可以使用以下方式来访问命名元组 c 的第一个元素 red:

print(c.red) #输出 25

注意:由于 namedtuples 是不可变的,因此我们不能使用代码 c.red = 35 处理 namedtuples。

3. 实例化

实例化是指创建一个新的 namedtuple 类型的对象。有三种方法可以实例化 namedtuples。

(1) 通过 iterable 实例化

我们可以使用 iterable 来实例化 namedtuples,这种方式需要注意的是 iterable 中元素的数量必须和 namedtuples 中定义的元素数量一致。例如:

c1 = Color(*[255,255,0])

(2) 通过关键字实例化

我们可以使用关键字来实例化 namedtuples,在这种情况下,不需要按位置定义值,只需要用字典中的键值对声明它们就可以了。例如:

c2 = Color(red=255, green=0, blue=0)

(3) 通过 _make() 方法实例化

我们可以使用 _make() 方法来实例化 namedtuples,它接收一个可迭代对象作为参数。例如:

data = [225, 200, 125]
c3 = Color._make(data)

示例

from collections import namedtuple

# 定义namedtuple Color,包括三个域 red、green 和 blue
Color = namedtuple('Color', ['red', 'green', 'blue'])

# 实例化namedtuple,通过 iterable 实例化
c1 = Color(*[255,255,0])
print(c1) #输出: Color(red=255, green=255, blue=0)

# 实例化namedtuple,通过关键字实例化
c2 = Color(red=255, green=0, blue=0)
print(c2) #输出: Color(red=255, green=0, blue=0)

# 实例化namedtuple,通过 _make() 方法实例化
data = [225, 200, 125]
c3 = Color._make(data)
print(c3) #输出: Color(red=225, green=200, blue=125)

以上代码演示了使用 namedtuple 的三种实例化方法。在 c1 中,我们使用了 iterable 来实例化 namedtuples。在 c2 中,我们使用关键字来实例化 namedtuples。在 c3 中,我们使用 _make() 方法来实例化 namedtuples。

另一种示例,请看下面的代码段:

from collections import namedtuple

# 定义namedtuple User,包括三个域 name、age 和 gender
User = namedtuple('User', ['name', 'age', 'gender'])

# 实例化namedtuple
users = [
    User(name='Tom', age=18, gender='M'),
    User(name='Jerry', age=20, gender='M'),
    User(name='Lucy', age=22, gender='F')
]

# 根据性别统计数量
gender_counter = dict()
for u in users:
    if u.gender not in gender_counter:
        gender_counter[u.gender] = 1
    else:
        gender_counter[u.gender] += 1

print(gender_counter) #输出:{'M': 2, 'F': 1}

以上代码演示了如何使用 namedtuple 来创建一个用户记录的列表,并按性别统计用户数量。使用 namedtuple 能够更直观地定义数据结构,而且代码的可读性更高。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python具名元组(namedtuple)的具体使用 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 带有 Google App Engine Python 2.7 的 Django 1.2 中的自定义标签

    【问题标题】:Custom Tags in Django 1.2 with Google App Engine Python 2.7带有 Google App Engine Python 2.7 的 Django 1.2 中的自定义标签 【发布时间】:2023-04-05 12:11:02 【问题描述】: 使用 Webapp 在 Google App Eng…

    Python开发 2023年4月5日
    00
  • SublimeText 2编译python出错的解决方法(The system cannot find the file specified)

    SublimeText 2 编译 Python 出错的解决方法:The system cannot find the file specified 问题描述 在 SublimeText 2 中编写 Python 代码并尝试编译时,出现以下错误提示: [Error 2] The system cannot find the file specified [cm…

    python 2023年6月3日
    00
  • Python中requests库的学习方法详解

    Python中requests库的学习方法详解 在本文中,我们将介绍如何学习Python中的requests库。requests库是Python中用于发送HTTP请求的第三方库,它提供了简单易用的API,使得发送HTTP请求变得非常容易。 步骤1:安装requests库 在学习requests库之前,我们需要先安装它。以下是安装requests库的步骤: 使…

    python 2023年5月15日
    00
  • Python自动化办公之定时发送邮件的实现

    现在我来为你详细说明“Python自动化办公之定时发送邮件的实现”的完整攻略。 1. 前置条件 在使用Python进行自动化邮件发送前,我们需要配置好SMTP服务器等信息。这通常包括: 发件人邮箱地址; STMP服务器地址; SMTP服务器端口号; 发件人邮箱的授权码。 2. 实现步骤 2.1 安装必要的库 我们需要用到Python内置的smtplib库和e…

    python 2023年5月19日
    00
  • matplotlib绘制符合论文要求的图片实例(必看篇)

    关于”matplotlib绘制符合论文要求的图片实例(必看篇)”,我详细讲解以下攻略: 1. 需求和重点 初学matplotlib绘图时,我们往往只是为了画出一些好看的图来看看,但是在学术论文中,绘图的需求高了许多。我们不仅需要图像精度高,更需要符合论文排版格式要求。 因此,本文着重点在于如何用matplotlib绘制符合论文要求的图片,例如设置图像大小、图…

    python 2023年5月19日
    00
  • python基础之字典

    以下是关于 Python 基础之字典的完整攻略: 什么是字典? 字典是一种数据类型,它的元素以键值对的形式存储。一个键值对就是一个键(key)和一个对应的值(value)构成的,键和它所对应的值之间用冒号分隔,键值对之间用逗号分隔,最后用一对大括号 ({}) 将它们包括起来。字典的键必须是唯一且不可变的对象,而值可以是任意类型的对象。 下面是一个字典的示例:…

    python 2023年5月13日
    00
  • 将python依赖包打包成window下可执行文件bat方式

    将Python依赖包打包成Windows下可执行文件(BAT方式)的攻略如下: 安装打包工具 首先需要安装一个打包工具,这里我们选择使用PyInstaller,可以通过pip来进行安装: pip install pyinstaller 打包 有了打包工具之后,我们就可以开始打包Python依赖包了。打包的命令很简单,如下所示: pyinstaller –o…

    python 2023年6月3日
    00
  • pip报错“OSError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/encoding.py’”怎么处理?

    当使用pip安装Python包时,可能会遇到“OSError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/encoding.py’”错误。这个错误通常是由以下原因之一引起的: 权限问题:如果您没有足够的权限来访问pip安装…

    python 2023年5月4日
    00
合作推广
合作推广
分享本页
返回顶部