Python 中的 __dict__2024 年 08 月 29 日 | 阅读 9 分钟 在 Python 中,字典是一种 **无序的数据值集合**,可以像映射一样 **用于存储数据值**。与其他只能为每个元素包含单个值的数据类型不同,字典还可以包含 **键:值** 对。为了使字典 **更高效**,提供了键值对。 在属性访问方面,大多数用户只熟悉 **"."**(例如 **x.any_attribute**)。简而言之,**属性访问就是获取与您已拥有的对象相关联的对象的過程**。对于不深入研究细节而使用 Python 的人来说,这看起来非常简单。然而,对于这个相对简单的过程,幕后还有很多工作要做。 什么是 _dict_ ?每个模块都有一个名为 **__dict__** 的独特属性。此字典 **包含模块的符号表**。对象的(可写)特性存储在字典或其他映射对象中。 简单来说,Python 中的每个对象都有一个 **由 __dict__ 符号表示的属性**。此外,该对象拥有为其指定的所有属性。__dict__ 的另一个名称是 **mappingproxy** 对象。我们可以通过 **将 __dict__ 属性应用于类对象** 来使用字典。 语法示例输出 {'identity': 'Lion', 'age': '10'} 示例 2此示例将演示,通过 **__dict__ 属性**,可以从任何对象创建一个字典 输出 The Dictionary from object fields belongs to the class Flowers : {'Rose': 'red', 'Lily': 'white', 'Lotus': 'pink'} 示例 3输出 {'practice': 1} {'__module__': '__main__', 'x': 1, 'practice_function': 在 Python 中使用字典而不使用 __dict__创建字典在 Python 中,可以通过将 **条目列表放在花括号中并用逗号分隔** 来创建字典。字典存储值对,其中一个元素是键,另一个是其 **键:值**。与**键**(**不能重复且必须是不可变的**)相反,字典中的**值**可以是**任何数据类型且可以重复**。 元素**用逗号分隔**,每个键**用冒号 (:)** 与其值区分开,并且整个结构包含在**花括号中**。一个完全不含任何内容的字典的写法如下: **{}**。 字典的键必须是**不可变的**,例如**整数、元组或字符串**,但值可以是任何类型。在 Python 字典中,拼写不同的相同键名被视为**不同的键**。请注意,**字典键是区分大小写的**;具有相同名称但大小写不同的键将得到不同处理。 示例 输出 Creating a Dictionary by using Integer Keys : {1: 'JAVA', 2: 'T', 3: 'POINT'} Creating a Dictionary by using Mixed Keys : {'Company': 'JavaTpoint', 7: [22, 35, 46, 97]} **内置方法 dict()** 也允许**创建字典**。只需将**两个花括号 {}** 放在一起即可创建一个**空字典**。 示例输出 This is an Empty Dictionary: {} Creating a Dictionary by using the dict() method : {1: 'JAVA', 2: 'T', 3: 'POINT'} Creating a Dictionary by using each item as a different pair : {1: 'JavaTpoint', 2: 'Great'} 创建字典的复杂性
嵌套字典这是一种字典,其中一个或多个**键将一个字典作为其值的键**。 示例 输出 Creating a Nested Dictionary : {1: 'JAVA', 2: 'T', 3: 'POINT', 4: {1: 'JavaTpoint', 2: 'Great'}} 向字典添加元素有**多种方法可以向 Python 字典添加元素**。例如,通过同时指定值和键 **Dict[Key] = "Value"**,可以一次向字典添加一个值。使用**内置的 update() 函数**,可以修改字典中的现有值。还可以使用**嵌套键值**来扩展现有字典。 注意:添加值时,如果键值对已存在,则会更新该值。如果不存在,则将新的键值添加到字典中。示例 输出 Empty Dictionary: {} Dictionary after the addition of 3 elements: {0: 'Java', 3: 'T', 6: 41} Dictionary after the adding a set of values to a key : {0: 'Java', 3: 'T', 6: 41, 'settingValues': (7, 8, 9)} Dictionary after Updated key value: {0: 'Java', 3: 'tPoint', 6: 41, 'settingValues': (7, 8, 9)} Dictionary after Addition of a Nested Key: {0: 'Java', 3: 'tPoint', 6: 41, 'settingValues': (7, 8, 9), 8: {'Nested': {'A': 'boy', 'B': 'Girl'}}} 向字典添加元素的复杂性
访问字典元素字典使用**键**,而其他数据类型需要索引来检索值。键可以使用 **get() 函数** 或**方括号 []** 来使用。 如果**字典中找不到键**,使用**方括号 []** 会**引发 KeyError**。另一方面,如果找不到键,**get() 函数会返回 None**。 示例 输出 Accessing an element using the key: T Accessing another element using the key: Website Accessing an using the get() method: Point Accessing another using the get() method: Java 访问字典元素时的复杂性
访问嵌套字典的元素我们可以借助**索引 [] 技术**来获取**嵌套字典**中现有键的值。 示例 输出 {3: 'JavatPoint'} JavatPoint Website 内置字典方法clear() dict.clear() 函数**删除字典中的所有键值对**。 copy() dict.copy() 方法**返回字典的浅拷贝**。 fromkeys() dict.fromkeys() 函数**使用提供的可迭代对象**(字符串、列表、集合或元组)作为键,并使用指定的默认值,**创建一个新字典**。 get() 这**给出与给定键关联的值**。 items() 该函数 dict.items() **返回一个字典视图对象**,它提供对字典项的动态表示,作为键值对的列表。当字典更新时,这个**视图对象也会更新**。 dict.keys() dict.keys() 函数**返回一个字典视图对象**,其中包含字典的**键列表**。 pop() 这**返回键的值,然后将其删除**。如果字典中缺少键,它要么引发 **KeyError**,要么在提供了默认值的情况下返回**默认值**。 popitem() 这**从字典中删除一个项目并返回一个 (键, 值) 对的元组**。返回对时使用**后进先出 (LIFO)** 顺序。 setdefault() 这**返回给定键的字典值**。如果找不到键,则会添加具有提供的**默认值**的键。如果未提供默认值,它会将**None** 设置为**默认值**。 values() 该函数 dict.values() **返回一个字典视图对象,该对象提供对字典中每个值的动态视图**。当字典更新时,这个**视图对象也会更新**。 update() 使用 dict.update() 函数,可以**更新字典或任何包含键值对的可迭代对象**,例如元组。 示例输出 {1: 'HTML', 2: 'CSS', 3: 'Javascript', 4: 'Python'} {} HTML dict_items([(1, 'HTML'), (2, 'CSS'), (3, 'Javascript'), (4, 'Python')]) dict_keys([1, 2, 3, 4]) {1: 'HTML', 2: 'CSS', 3: 'Javascript'} {1: 'HTML', 2: 'CSS'} {1: 'HTML', 2: 'C++'} dict_values(['HTML', 'C++']) 区分字典和列表像**列表和字典**这样的数据结构在根本上是不同的。**列表**可以存储**有序的项序列**,这样我们就可以对其进行索引或迭代。列表也可以在生成后进行修改,因为它们是可变的类型。**Python 字典**是**键值存储**和**哈希表的实现**。它不遵循任何特定顺序,并且需要可哈希的键。此外,它对于键查找速度很快。 **列表**的元素包含以下特征:
**字典**元素的特征如下:
用途当我们拥有**一组不同的键对应值**时,我们使用**字典**;当我们拥有**一组有序的事物**时,我们使用**列表**。 结论
|
?作为最受欢迎和适应性最强的编程语言之一,Python 可用于创建各种应用程序。Python 使程序员能够为 Web 应用程序创建服务器端或后端代码。还包括了几个框架和包。考虑到这一点,我们将尝试...
阅读 3 分钟
当我们在 Python 的 Pandas DataFrame 中处理数据时,遇到时间序列数据是很常见的。Pandas 是一个强大的工具,可以在 Python 中处理时间序列数据,我们可能需要将字符串转换为给定时间序列数据中的 Datetime 格式。
阅读 12 分钟
Python 以其优雅简洁的语法而闻名,提供了大量功能,使编码变得轻而易举。其中一个经常被忽视但可以大大增强代码可读性和性能的功能是连接评估运算符的能力。连接评估运算符允许开发人员...
阅读 6 分钟
我们已经处理了基于字符串和字典的不同问题。在本教程中,我们将看到如何在 Python 中将字符串转换为字典。在此之前,让我们快速回顾一下字符串和字典。字符串被定义为字符序列并且...
阅读 3 分钟
Python 提供了读取、写入和创建文件的功能。文件可以是两种类型——普通文本和二进制。文本文件——这种类型的文件由普通字符组成,以特殊字符终止。这个特殊字符称为 EOL(行尾)。...
阅读 2 分钟
什么是箱线图?箱线图是使用箱体和一些垂直线可视化数据分布的一种方法。它被称为胡须图。数据可以分布在五个关键范围之间,如下所示:最小值:Q1-1.5*IQR 第 1 四分位数...
阅读 3 分钟
TensorFlow 是一个用于深度学习和机器学习的开源软件库。它最初由 Google Brain 团队创建,目前由 Google TensorFlow 团队负责维护。它用于许多不同的用途,包括时间序列预测、语音和图像识别以及......
阅读 4 分钟
在本教程中,我们将探讨一种名为凯撒密码的加密方法。它是密码学的一部分。简介 在这种技术中,每个字符都被一个字母替换,该字母位于其在字母表中之后或之前的某个固定数字位置。例如 - 字母 B 被替换为...
阅读 4 分钟
对于评估机器学习模型的有效性,评估至关重要。一个由机器学习开发出的模型会使用各种指标进行评估。为了根据性能优化模型,选择最佳指标至关重要。我们讨论了数学基础并使用...
阅读 16 分钟
如何在 Python 中将列表转换为字典?在 Python 中,列表是可变且有序的元素集合,而字典是无序、可变且索引的键值对集合。有几种方法可以将列表转换为...
阅读 2 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India