Python “命名元组”是什么
命名元组是集合模块中存在的一种容器类型。Python中的 namedtuple() 函数允许创建带有字段名和其定义的元组,类似于字典(键值对)。
命名元组相比于字典的优势在于可以通过键和值进行访问。
语法
创建命名元组的语法如下所示:
namedtuple(Name,[ Values name])
在此处,
- 您想要称为NamedTuple的内容由占位符 Name 确定。
-
各个值或属性的名称列表由占位符 Values name 显示。
创建一个命名元组
要在Python中创建一个命名元组,需要从collections模块中导入 namedtuple 。然后,实例化一个构造函数,该构造函数接受命名元组的名称和包含字段名称的字符串。
示例
在以下示例代码中,我们创建了一个命名元组,即student,其中字段为rollnumber、name、age和marks。
from collections import namedtuple
student = namedtuple('student',('rollnumber ,name, age, marks'))
student1 = student(rollnumber =1, name='Krishna', age= 25, marks=90)
print(student1.rollnumber)
print(student1.name)
student2 = student(rollnumber =2, name='Ram', age= 20, marks=80)
print(student2.name)
print(student2.age)
输出
在执行上述程序时,将获得以下输出。
1
Krishna
Ram
20
访问元组的字段
我们可以通过以下几种方式访问元组的字段:
- 通过索引访问 - 使用 namedtuple() 函数的属性值可以按索引访问,因为它们是有序的。
-
通过键名访问 - 可以像字典一样通过键名访问属性值。
-
使用getattr() - 这是另一种访问 namedtuple() 函数给定键值的方法。
示例
在以下示例代码中,我们已经使用了上述三种方法来访问字段值,即通过索引访问、通过键名访问和使用 getattr() 方法。
from collections import namedtuple
employee = namedtuple('employee',('id ,name, age, company'))
emp1 = employee(id =1, name='Krishna', age= 35, company='Tutorialspoint')
print("The employee name is accesed using index: ", end="")
print(emp1[1])
print("The employee age is accessed using keyname: ", end="")
print(emp1.age)
print("The employee company name is accessed using getattr(): ", end="")
print(getattr(emp1,'company'))
输出
在执行上述程序后,我们获得以下输出。
The employee name is accesed using index: Krishna
The employee age is accessed using keyname: 35
The employee company name is accessed using getattr(): Tutorialspoint
具有默认值的命名元组
类似于我们如何为常规类的属性设置默认值,可以使用默认参数创建命名元组类。由于具有默认值的字段应出现在所有没有默认值的字段之后,因此默认值应提供给最右边的属性。
示例
在以下示例中,动物类有一个默认条目 –
from collections import namedtuple
animal = namedtuple("animal", ["Name","Class","Kingdom","Phylum","Genus"], defaults = ['Panthera'])
anim = animal("Lion", "Mammalia", "Animalia", "Chordata")
print ('The named tuple with default values are:',anim)
输出
如果我们只用一个值创建NamedTuple,’Panthera’将作为‘Genus’的默认值,它是我们声明右侧的字段,如下所示的输出−
The named tuple with default values are: animal(Name='Lion', Class='Mammalia', Kingdom='Animalia', Phylum='Chordata', Genus='Panthera')