python中把元组转换为namedtuple方法

  • Post category:Python

当我们需要对元组进行访问,但是元组的元素又不方便用名字进行访问时,我们可以使用 namedtuple 把元组转换为带有名字的元素,便于我们进行访问。下面是使用 namedtuple 的详细攻略:

1. 导入模块

首先,我们需要导入 collections 模块,因为 namedtuple 函数是该模块中的一个方法。

from collections import namedtuple

2. 定义命名元组

接下来,我们需要调用 namedtuple 方法来创建一个命名元组。它需要两个参数:元组的名称(我们自定义)和元组的元素名称(作为一个字符串列表)。

person = namedtuple('Person', ['name', 'age', 'gender'])

上述代码创建了一个名为 person 的命名元组,该元组包含3个元素 nameagegender

3. 创建实例

现在我们可以用上面定义的命名元组来创建实例了。我们可以通过传递参数给命名元组来创建实例。

person1 = person('Tom', 20, 'Male')
person2 = person('Lucy', 18, 'Female')

上述代码创建了两个不同的 person 实例,分别为 person1person2

4. 访问元素

我们可以使用点号 . 访问命名元组中的元素,就像访问对象的属性一样。

print(person1.name) # 输出 'Tom'
print(person2.age)  # 输出 18

上述代码分别输出了 person1person2 中的元素 nameage

示例1

from collections import namedtuple

# 创建命名元组
Score = namedtuple('Score', ['chinese', 'math', 'english'])

# 创建实例
s1 = Score(90, 80, 85)
s2 = Score(85, 95, 90)

# 访问元素
print(s1.chinese)  # 输出 90
print(s2.math)     # 输出 95

上述代码演示了创建一个命名元组 Score,该元组包含3个元素 chinesemathenglish。然后创建了两个不同的实例 s1s2。最后,访问了 s1chinese 元素和 s2math 元素。

示例2

from collections import namedtuple

# 创建命名元组
Student = namedtuple('Student', ['name', 'age', 'gender'])

# 创建实例
s1 = Student('Tom', 20, 'Male')
s2 = Student('Lucy', 18, 'Female')

# 访问元素
print(s1.name)     # 输出 'Tom'
print(s2.gender)   # 输出 'Female'

上述代码演示了创建一个命名元组 Student,该元组包含3个元素 nameagegender。然后创建了两个不同的实例 s1s2。最后,访问了 s1name 元素和 s2gender 元素。