Python 中的 NamedTuple2024年8月29日 | 阅读 7 分钟 在Python中,一种“特殊”的元组称为“命名元组”。Python初学者经常对此感到困惑,特别是当且何时需要实现它。 因为NamedTuple是一种元组,所以它可以执行元组的所有功能。然而,它不仅仅是一个简单的Python元组。在其他计算机语言中,就像C++一样,它更类似于一个“类”。它是元组的一个子类型,具有指定的字段和内置的、可编程的固定长度。本教程将解释Python NamedTuples,并展示如何使用它们以及何时以及为何需要使用它们。 什么是Python元组?在继续之前,我们认为应该回顾一下Python中的元组。 Python中的元组是一个可以存储多个值的容器。请看以下示例。 代码 正如我们所见,我们使用括号来定义它。索引用于访问元素。(请记住,Python中的索引从零开始。) 代码 输出 32 numbers[1]Python元组的特点是,我们不能修改其元素,即元组的元素是不可变的。 Python NamedTuple语法如所示,我们必须首先从Python的内置模块collections中导入NamedTuple。 以下是构建NamedTuple的基本语法 Name它是我们想要给NamedTuple起的名称的参数,并且 [Names of Values]它是包含不同值或属性名称的列表的占位符。 Python NamedTuple示例如前所述,第一步是导入NamedTuple。 现在,我们可以使用前面部分中的语法来构建一个NamedTuple。 在此示例中, 我们选择将NamedTuple命名为Student,并在列表中提及值名称“Name”、“Class”、“Age”、“Subject”和“Marks”。这样,我们就创建了第一个NamedTuple——Student。 现在,我们可以像这样,使用Student创建一个具有所需规格的house Student1。 我们只需要[Names of Values]中标签或字段必须采用的具体值或内容。 要录入一个新学生,比如Student2,只需复制其值并粘贴到新变量的字段中。 我们会发现,我们可以将Student用作蓝图,随意记录新学生,而无需每次都调用字段标签。 如何使用点表示法获取NamedTuple的值我们可以使用点方法来获取NamedTuple实例Student1和Student2的值。以下是语法。 以下代码示例演示了这一点。 代码 输出 15 11 "English" 79 "Itika" 同样,我们可以使用Student2.Age、Student2.Class等来检索与NamedTuple Student2相关的变量。 NamedTuple的访问方法我们可以使用索引、关键字和getattr()函数来检索NamedTuple中的值。NamedTuple的字段值是严格排序的。因此,我们可以使用索引来查找它们。 NamedTuple将字段名称转换为属性。因此,可以使用getattr()从该字段中检索数据。 代码 输出 The name and country of the first participant are: Itika and India The name and country of the second participant are: Arshia and Australia The Age of participant 1 and 2 are: 21 and 19 NamedTuple的转换过程可以使用几种技术将不同的集合转换为NamedTuple。我们还可以使用_make()函数将列表、元组或其他可迭代对象转换为NamedTuple实例。 我们还可以将字典数据类型对象转换为NamedTuple集合。对于此转换,需要使用**运算符。 作为OrderedDict数据类型项,NamedTuple可以生成带有其键的项。我们可以调用_asdict()函数将其转换为OrderedDict。 代码 输出 Participant(Name='Itika', Age='21', Country='India') Participant(Name='Arshia', Age='19', Country='Australia') {'Name': 'Itika', 'Age': '21', 'Country': 'India'} NamedTuple的更多操作还有其他方法,如_fields()和_replace()。我们可以通过调用_fields()函数来确定NamedTuple有哪些字段。_replace()函数用于替换一个值。 代码 输出 Participant(Name='Itika', Age='21', Country='India') The fields of Participant: ('Name', 'Age', 'Country') Participant(Name='Itika', Age='21', Country='Germany') Python的NamedTuple如何工作?让我们看看在Python中还可以用NamedTuple做什么。 1.Python中的NamedTuple是不可变的。与普通元组一样,Python中的NamedTuple也不能被修改。我们无法更改其属性。 我们将尝试修改名为'Student'的元组的一个属性来演示这一点。 代码 输出 AttributeError Traceback (most recent call last) Input In [41], in 可以看到,它引发了一个AttributeError。因此,我们可以推断NamedTuple是不可变的。 2.从Python NamedTuple创建Python字典在Python中,NamedTuple类似于字典,我们可以通过以下方式将其转换为字典: 代码 输出 {'Name': 'Arshia', 'Class': 12, 'Age': 17, 'Subject': 'Maths', 'Marks': 93} 我们为此使用了.asdict()方法。这也生成了一个Python OrderedDict。 3.带默认值的NamedTuple就像我们可以在普通类中设置属性的初始值一样,可以配置一个命名元组类,使其具有默认参数。由于具有默认值的字段应出现在所有没有默认值的字段之后,因此将默认值赋给最右边的属性。 让我们用1个默认条目重新定义Student类。 代码 输出 Student(Name='Arshia', Class=12, Age=17, Subject='Maths', Marks=100) 如果我们只用一个值创建一个NamedTuple,则默认值100将应用于marks,这是我们在声明中最右边的字段。 如果我们明确指定Age字段,默认值Age会生效吗? 代码 输出 TypeError: Student.__new__() missing 3 required positional arguments: 'Name', 'Class', and 'Subject' 答案是否定的。在NamedTuple中,字段的顺序非常严格。即使我们明确声明了任何内容,为了避免歧义和潜在的困难,默认值也必须是最右边的。 Python Namedtuple的优点当然,如果看不到任何好处,没有人会使用NamedTuple。所以,我们有以下几点: 1.与标准元组不同,Python中的NamedTuple可以通过其名称检索变量。 代码 输出 17 2.由于它不包含每个实例的字典,Python NamedTuple在内存方面与传统元组一样高效。由于这个原因,它也比字典快。 结论在本教程中,我们学习了NamedTuples如何使我们能够结合元组和字典的优点,如何构建NamedTuples以及如何使用它们。如何在Python中使用点表示法检索NamedTuples的值,它们是如何工作的。 如果读者熟悉Python的OOP,他们会发现这与Python类的功能相同。类及其属性充当创建更多对象或实例的蓝图,每个对象或实例都有自己的一组属性值。 然而,为了提高代码的清晰度,定义一个类并提供必要的属性通常是过度的,而且创建NamedTuples要快得多。 下一个主题Python中的OrderedDict |
Python 有一个名为 Enchant 的模块,用于检查单词的拼写并提供更正建议。它还提供词语的反义词和同义词选项。它还可以检查单词是否存在于字典中。check()...
阅读 2 分钟
简介:在本文中,我们将讨论将变量传递给 Python 字典。Python 有各种内置数据结构,可以存储不同类型的数据。Python 字典是一种可以存储键值对数据的数据结构。从概念上讲,它就像一个映射....
阅读 3 分钟
在本教程中,我们将使用 Python 的 turtle 库绘制印度国旗。Turtle 库是一个 Python 库,用于在 Python 中创建独特的图形、图片和游戏。Python turtle 库由 Wally Feurzeig、Seymour Parpet 和 Cynthia Solomon 于 1967 年开发。它...
阅读 6 分钟
? 让我们看看如何修改 Pandas DataFrame 的列标题。在本教程中,我们将介绍六种不同的方法来更改 pandas DataFrame 中的列名。记录保存在 Pandas DataFrame(一个矩形矩阵)中。DataFrame 使可视化和...
5 分钟阅读
如何在 Python 中设计一个 Hashset?我们知道 HashSet 是 Java 中一个著名的类。HashSet 用于使用哈希表存储值。在本教程中,我们将介绍 Python 中的 HashSet。我们还将学习如何设计...
阅读 8 分钟
Python 与 JavaScript Python 和 JavaScript 都是功能极其强大的编程语言,具有广泛的实际应用。Python 是一种可用于 Web 开发和各种其他用途(如科学研究)的编程语言。JavaScript 主要用于前端和后端 Web...
阅读 6 分钟
在 Python 中,浮点值的范围取决于实现和平台。Python 语言规范仅要求浮点数至少支持 1e-308 到 1e+308,精度至少为 53 位。实际上,大多数现代 Python 实现都使用 IEEE 754...
阅读 4 分钟
在 Python 中查找和执行模块 在本文中,我们将讨论用户如何在 Python 中查找模块以及 Python 的哪些函数用于执行模块。在 Python 中查找模块 当用户导入模块时,Python 解释器将...
阅读 3 分钟
简介 Python 是一种广泛使用的高级编程语言,在多个领域有多种应用,如 Web 开发、数据科学、人工智能、机器学习等等。Python 因其简单性、易用性以及与多种平台的兼容性而在科学界获得了巨大的声望...
阅读 3 分钟
基于类的视图和基于函数的视图之间的区别 Django 是最流行的 Web 开发框架之一。它之所以受欢迎,是因为它提供了许多内置功能,可以为开发人员节省大量时间。如果您是初学者,那么它将...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India