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')