Python中namedtuple 命名元祖的使用

  • Post category:Python

下面是Python中namedtuple命名元组的完整攻略。

什么是namedtuple命名元组

namedtuple是Python标准库中的一个数据类型,它是一个工厂函数,返回的是一个可以像class那样使用的类,这个类定义了一个元组和一个有可读性的名称,而这些名称可以用来访问这个元组中的元素,从而使代码更加可读、可维护。

定义一个元组的方式通常是这样的:

t = (1, 2, 3)

这里的问题是,我们很难对于元组中的每个值知道它们代表的是什么。如果我们使用namedtuple,它可以为这些值添加可读性的名称。

如何使用namedtuple

为了使用namedtuple,我们需要导入collections模块:

from collections import namedtuple

了解完整的元组名称列表,然后定义一个新的namedtuple:

Student = namedtuple('Student', ['name', 'age', 'gender'])

这里,我们定义了一个称为“Student”的类,它包括三个名称:’name’, ‘age’, ‘gender’。我们可以将其视为一个与类一样的东西,并且可以像一个Python类一样实例化它:

s = Student(name='Tom', age=18, gender='male')

我们也可以类似访问字典的方式来访问namedtuple中的元素:

print(s.name)    # 输出:Tom
print(s.age)     # 输出:18

一个示例

现在我们来看一个使用namedtuple的简单示例,该示例模拟电影的票价:

from collections import namedtuple

Movie = namedtuple('Movie', ['title', 'director', 'year', 'price'])

movie1 = Movie('The Shawshank Redemption', 'Frank Darabont', 1994, 29.0)
movie2 = Movie('Pulp Fiction', 'Quentin Tarantino', 1994, 35.5)

print(f"The ticket for {movie1.title} directed by {movie1.director} in {movie1.year} costs {movie1.price} yuan.")
print(f"The ticket for {movie2.title} directed by {movie2.director} in {movie2.year} costs {movie2.price} yuan.")

输出:

The ticket for The Shawshank Redemption directed by Frank Darabont in 1994 costs 29.0 yuan.
The ticket for Pulp Fiction directed by Quentin Tarantino in 1994 costs 35.5 yuan.

另一个示例

下面是另一个示例,它展示了如何使用namedtuple模拟一个简单的人员管理系统:

from collections import namedtuple

Employee = namedtuple('Employee', ['name', 'age', 'department'])

employees = [
    Employee('Tom', 27, 'HR'),
    Employee('Jerry', 33, 'Marketing'),
    Employee('Alice', 22, 'IT'),
]

for employee in employees:
    print(f"{employee.name} is {employee.age} years old and works in {employee.department} department.")

输出:

Tom is 27 years old and works in HR department.
Jerry is 33 years old and works in Marketing department.
Alice is 22 years old and works in IT department.

以上就是使用namedtuple函数的详细介绍,我希望这篇攻略对你有所帮助。