Python中的“named tuples”是什么?

Python中的“named tuples”是什么?

Named tuple是存在于collection模块中的一种容器类型。Python中的 namedstuple() 函数允许创建具有字段名称和字段定义的元组,类似于字典(键值对)。

Named tuple相对于字典的优点在于可以从键和值两个方面进行访问。

更多Python相关文章,请阅读:Python 教程

语法

创建namedtuple的语法如下所示−

namedtuple(Name,[ Values name])

在这里,

  • 您想要调用其名称的NamedTuple由占位符 Name 指示。

  • 各个值或属性的名称列表由占位符 Values name 指示。

创建namedtuple

要在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("按索引访问员工姓名: ", end="")
print(emp1[1])
print("按关键字访问员工年龄: ", end="")
print(emp1.age)
print("使用getattr()访问员工公司名称: ", end="")
print(getattr(emp1,'company'))

输出

运行以上程序将得到以下输出。

按索引访问员工姓名: Krishna
按关键字访问员工年龄: 35
使用getattr()访问员工公司名称: Tutorialspoint

具有默认值的命名元组

与在常规类中为属性建立默认值类似,可以创建具有默认参数的命名元组类。由于具有默认值的字段应出现在所有未指定默认值的字段之后,因此将默认值提供给最右边的属性。

例子

在以下示例中,动物类具有一个默认条目−

from collections import namedtuple
animal = namedtuple("animal", ["Name","Class","Kingdom","Phylum","Genus"], defaults = ['Panthera'])
anim = animal("Lion", "Mammalia", "Animalia", "Chordata")
print ('具有默认值的命名元组:',anim) 

输出

如果我们仅创建具有一个值的NamedTuple,则“Panthera”将用作默认值,用于声明右侧的字段,如下面的输出所示−

具有默认值的命名元组:animal(Name='Lion', Class='Mammalia', Kingdom='Animalia', Phylum='Chordata', Genus='Panthera') 

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程