解锁 Python 嵌套字典的奥秘:高效操作与实战应用指南

在这里插入图片描述

文章目录

    • 前言
    • 🍀一、 什么是 Python 字典?
        • 1.1 字典的语法
    • 🍀二、 字典的基本操作
        • 2.1 字典的创建
        • 2.2 访问字典中的值
        • 2.3 添加或修改键值对
        • 2.4 删除字典中的键值对
    • 🍀三、 字典的遍历操作
        • 3.1 遍历字典的键
        • 3.2 遍历字典的值
        • 3.3 同时遍历键和值
    • 🍀四、 字典的内置方法
        • 4.1 `keys()`, `values()`, `items()`
        • 4.2 `get()` 方法
        • 4.3 `pop()` 和 `popitem()` 方法
        • 4.4 `update()` 和 `clear()` 方法
    • 🍀五、 嵌套字典及其操作
        • 5.1 访问嵌套字典的值
        • 5.2 修改嵌套字典中的值
        • 5.3 添加新的键值对到嵌套字典
        • 5.4 删除嵌套字典中的键值对
    • 🍀六、字典的应用场景
        • 6.1 配置文件和设置管理
          • 示例:应用程序配置管理
        • 6.2 计数器和频率统计
          • 示例:统计字符串中每个字符的出现次数
        • 6.3 `API` 返回值的解析
          • 示例:解析 `REST API` 返回的 `JSON` 数据
        • 6.4 数据库记录映射
          • 示例:数据库查询结果映射
    • 🍀七、字典的性能及其内部实现
        • 7.1 哈希表的基本原理
        • 7.2 哈希冲突与解决方案
        • 7.3 字典的扩展和重新哈希
        • 7.3.1 何时进行扩展
          • 示例:字典扩展前后的行为
        • 7.3.2 扩展的性能影响
        • 7.4 Python 字典的负载因子
    • 🍀八、字典的高级技巧
        • 8.1 字典推导式
          • 示例:使用字典推导式创建字典
        • 8.2 `defaultdict` 的使用
          • 示例:使用 `defaultdict` 进行字符计数
        • 8.3 `OrderedDict` 和其他字典子类
          • 示例:使用 `OrderedDict`
    • 🍀九、常见的字典相关问题和优化技巧
        • 9.1 如何处理字典的键不存在的情况?
        • 9.2 如何合并两个字典?
    • 结语


前言

在Python编程中,字典(dict)是一种非常重要的数据结构,它允许我们通过键(key)来快速查找、添加、更新和删除值(value)。字典的键必须是唯一的,而值则可以是任何数据类型,包括数字、字符串、列表、元组甚至是另一个字典。这种灵活性使得字典成为处理复杂数据结构的强大工具。本文将详细介绍Python中字典的定义、基本操作、嵌套字典、遍历方法、高级操作技巧等,并通过代码实例进行演示和分析。


🍀一、 什么是 Python 字典?

Python 字典是一种无序的、可变的、通过键值对(key-value pair)存储数据的容器。字典类似于我们生活中的词典或地址簿,在这些场景中,每个词(键)都有一个定义(值),而字典提供了这种映射关系。

与 Python 中的其他数据结构(如列表和元组)不同,字典的主要特点是:

  • 键是唯一的:字典中的键不能重复,每个键都唯一地映射到一个值。
  • 键必须是不可变类型:字典中的键必须是不可变对象,比如字符串、数字或元组,而不能是列表、集合等可变对象。
  • 查找速度快:字典内部使用哈希表实现,因此在查找、插入、删除键值对时非常高效,时间复杂度接近 O(1)。
1.1 字典的语法

字典使用 {} 来创建,每个键值对通过 : 分隔,多个键值对通过逗号 , 分隔。如下是一个简单的字典示例:

person = {"name": "Alice","age": 30,"city": "New York"
}

在这个字典中,"name""age""city" 是键,而 "Alice"30"New York" 是对应的值。

🍀二、 字典的基本操作

2.1 字典的创建

字典可以通过多种方式创建,最常见的方式是直接使用花括号 {} 包裹键值对:

person = {"name": "Bob", "age": 25, "city": "San Francisco"}

也可以使用 dict() 函数来创建字典,特别是当键值对由两个独立的列表或元组提供时:

# 使用 dict() 函数创建字典
person = dict(name="Bob", age=25, city="San Francisco")

你还可以从一系列元组列表中创建字典:

# 使用元组创建字典
items = [("name", "Alice"), ("age", 30), ("city", "New York")]
person = dict(items)
2.2 访问字典中的值

你可以通过键来访问字典中的值,如果该键不存在则会引发 KeyError 错误:

# 通过键访问字典中的值
print(person["name"])  # 输出: Alice

为了避免访问不存在的键时抛出异常,建议使用字典的 get() 方法:

# 使用 get() 方法
age = person.get("age", "Key not found")
print(age)  # 输出: 30
2.3 添加或修改键值对

字典是可变的数据结构,因此你可以向字典中添加新的键值对,或者修改已有键的值:

# 添加新键值对
person["job"] = "Engineer"# 修改已有键的值
person["age"] = 31
2.4 删除字典中的键值对

可以使用 del 语句删除指定的键值对:

# 删除键值对
del person["city"]

也可以使用 pop() 方法删除键,并返回该键的值:

# 使用 pop() 方法
job = person.pop("job", "Key not found")
print(job)  # 输出: Engineer

popitem() 是另一个删除方法,它会删除并返回字典中的最后一个键值对,通常用于需要在不指定键的情况下删除元素时使用。

🍀三、 字典的遍历操作

3.1 遍历字典的键

可以使用 for 循环遍历字典中的所有键:

for key in person:print(key)

或使用 keys() 方法显式遍历键:

for key in person.keys():print(key)
3.2 遍历字典的值

可以使用 values() 方法遍历字典中的所有值:

for value in person.values():print(value)
3.3 同时遍历键和值

要同时遍历字典中的键和值,可以使用 items() 方法:

for key, value in person.items():print(f"{key}: {value}")

🍀四、 字典的内置方法

Python 字典有许多强大的内置方法,它们可以帮助你轻松管理和操作字典中的数据。

4.1 keys(), values(), items()

这三个方法分别返回字典中的所有键、所有值以及键值对的视图。

python复制代码keys = person.keys()  # 返回所有键
values = person.values()  # 返回所有值
items = person.items()  # 返回所有键值对
4.2 get() 方法

get() 方法可以用于安全地访问字典中的值,即使键不存在也不会抛出错误。

age = person.get("age", 25)  # 如果 age 键不存在,则返回默认值 25
4.3 pop()popitem() 方法

pop() 可以用来删除字典中指定的键值对并返回其值,而 popitem() 则删除并返回字典中的最后一个键值对。

# 删除指定键
age = person.pop("age", "Key not found")# 删除最后一个键值对
last_item = person.popitem()
4.4 update()clear() 方法

update() 方法可以用来将一个字典的内容更新到另一个字典中,而 clear() 则用于清空字典。

# 使用 update() 更新字典
additional_info = {"country": "USA", "email": "bob@example.com"}
person.update(additional_info)# 使用 clear() 清空字典
person.clear()

🍀五、 嵌套字典及其操作

嵌套字典是指字典中的某些值本身也是字典。它可以用于表示更复杂的数据结构,例如表示某个用户的详细信息或多个层次的数据关系。让我们首先定义一个嵌套字典作为示例:

# 定义一个嵌套字典
company = {"department_1": {"manager": "Alice","employees": 10,"budget": 50000},"department_2": {"manager": "Bob","employees": 8,"budget": 40000},"department_3": {"manager": "Charlie","employees": 5,"budget": 30000}
}

这个字典 company 包含了 3 个部门,每个部门都有经理、员工人数和预算等信息。

5.1 访问嵌套字典的值

要访问嵌套字典中的值,可以逐级指定键:

# 访问 department_1 的经理
manager_dept1 = company["department_1"]["manager"]
print(manager_dept1)  # 输出: Alice# 访问 department_2 的预算
budget_dept2 = company["department_2"]["budget"]
print(budget_dept2)  # 输出: 40000
5.2 修改嵌套字典中的值

我们可以通过直接指定键来修改嵌套字典中的值:

# 修改 department_3 的员工人数
company["department_3"]["employees"] = 7
print(company["department_3"]["employees"])  # 输出: 7
5.3 添加新的键值对到嵌套字典

我们可以向嵌套字典的某一层添加新的键值对:

# 为 department_1 添加一个新的键值对 "location"
company["department_1"]["location"] = "Building A"
print(company["department_1"]["location"])  # 输出: Building A
5.4 删除嵌套字典中的键值对

可以使用 del 删除嵌套字典中的键值对:

# 删除 department_2 的预算信息
del company["department_2"]["budget"]
print(company["department_2"])  # 输出: {'manager': 'Bob', 'employees': 8}

🍀六、字典的应用场景

Python 字典在许多开发场景中都是不可或缺的数据结构,尤其适用于存储键值对并高效地进行查找、插入和删除操作。以下是几个常见的字典应用场景及其具体使用方法:

6.1 配置文件和设置管理

字典非常适合用于存储应用程序的配置和全局设置。由于字典是动态且可变的数据结构,可以方便地从文件(如 JSON 或 YAML)中加载设置,且在应用程序运行时灵活地进行修改。

示例:应用程序配置管理
# 定义一个应用的配置字典
config = {"database": {"host": "localhost","port": 5432,"username": "admin","password": "secret"},"app": {"debug": True,"secret_key": "s3cr3t_key","allowed_hosts": ["localhost", "127.0.0.1"]}
}# 访问数据库配置
db_host = config["database"]["host"]# 修改调试模式
config["app"]["debug"] = False

通过字典,可以轻松管理多个模块的配置信息,如数据库、缓存和日志等。这样,配置可以集中存放且易于修改。

6.2 计数器和频率统计

字典是非常高效的工具,用于统计某个集合中各元素出现的次数。通过将元素作为字典的键,频率作为值,能够快速统计频次信息。

示例:统计字符串中每个字符的出现次数
def char_count(string):count_dict = {}for char in string:if char in count_dict:count_dict[char] += 1else:count_dict[char] = 1return count_dict# 示例用法
text = "hello world"
count_result = char_count(text)
print(count_result)

在这个例子中,每个字符都作为键存储在字典中,其值为字符出现的次数。可以使用 collections 模块中的 defaultdict 来进一步优化计数逻辑,避免显式地检查键是否存在。

6.3 API 返回值的解析

字典常用于解析和存储 API 的返回结果,尤其是 JSON 格式的响应。API 通常以嵌套结构的形式返回数据,字典可以轻松表示这种嵌套关系并进行操作。

示例:解析 REST API 返回的 JSON 数据
python复制代码import json# 假设我们从一个 API 得到以下 JSON 响应
api_response = '''{"user": {"id": 123,"name": "Alice","email": "alice@example.com"},"status": "active","roles": ["admin", "editor"]
}'''# 将 JSON 字符串解析为 Python 字典
data = json.loads(api_response)# 访问解析后的数据
user_id = data["user"]["id"]
user_name = data["user"]["name"]
roles = data["roles"]print(f"User {user_name} (ID: {user_id}) has roles: {roles}")

字典结构与 JSON 的键值结构非常匹配,使得处理 API 数据变得直观且高效。

6.4 数据库记录映射

在数据库操作中,字典也被广泛用于将查询结果映射为 Python 对象。通常,每行记录可以表示为一个字典,其中列名作为键,列值作为字典的值。

示例:数据库查询结果映射
# 假设查询结果如下
query_result = [{"id": 1, "name": "Alice", "age": 30},{"id": 2, "name": "Bob", "age": 25}
]# 访问查询结果
for row in query_result:print(f"User {row['name']} is {row['age']} years old.")

这种方法可以让开发者通过字典键名来访问数据库记录,提高代码的可读性。

🍀七、字典的性能及其内部实现

Python 字典作为一种映射类型的数据结构,其高效性得益于它的底层实现:哈希表。哈希表的特性使得字典在处理查找、插入和删除操作时,能够在平均时间复杂度为 O(1) 的情况下完成。这一性能极大地提升了字典在处理大量数据时的表现。接下来我们将深入探讨 Python 字典的内部实现,理解其高效性的根源。

7.1 哈希表的基本原理

哈希表是一种通过哈希函数将键映射到固定大小的存储空间(槽位,bucket)的数据结构。哈希表的关键概念是通过哈希函数计算出键的哈希值(哈希码),并将其对应的值存储在计算出的哈希码所对应的槽位中。

例如,假设我们有一个简单的字典:

person = {"name": "Alice","age": 30,"city": "New York"
}

当我们访问 person["name"] 时,Python 会对 "name" 进行哈希计算,找到它映射的槽位,然后直接从这个槽位中读取存储的值 "Alice"

这种直接查找的方式与列表等顺序数据结构不同,列表中的查找操作需要逐个遍历每个元素,而字典的哈希表实现允许我们通过哈希函数直接定位目标位置,因此速度非常快,平均复杂度为 O(1)。

7.2 哈希冲突与解决方案

由于哈希表的存储空间是有限的,不同的键在通过哈希函数计算后,可能会得到相同的哈希值,这种现象称为哈希冲突。Python 字典使用了开放寻址法来解决哈希冲突。当哈希冲突发生时,字典会通过线性探测或者二次探测等方式寻找下一个空闲的槽位进行存储。

具体步骤如下:

  • 计算出键的哈希值,映射到哈希表的某个槽位。
  • 如果槽位已被占用,则通过线性或二次探测查找下一个可用槽位。
  • 将键值对存储到找到的空槽中。

尽管哈希冲突会影响性能,但在多数情况下,Python 字典的哈希函数设计非常有效,冲突发生的概率较低。

7.3 字典的扩展和重新哈希

字典的大小是动态调整的,哈希表的初始容量有限,当插入的键值对数量达到一定的阈值(通常是容量的三分之二)时,Python 会自动扩展字典的容量,并将已有的键值对重新分配到更大的哈希表中,这个过程称为重新哈希(rehashing)

重新哈希的步骤如下:

  1. 创建一个新的、更大的哈希表。
  2. 遍历旧哈希表中的所有键值对,重新计算它们的哈希值,并将它们插入到新的哈希表中。
  3. 丢弃旧的哈希表。

这种扩展操作会有一次性的性能开销,但在大多数情况下,字典的动态扩展是非常高效的,它保持了插入、查找和删除操作的高效性,确保平均时间复杂度为 O(1)。

7.3.1 何时进行扩展

当字典的负载因子达到阈值时,Python 会自动扩展字典的容量。扩展过程中的内存分配使得字典能够处理更多的键值对,而不必频繁重新调整大小。字典的扩展是通过倍数增长来进行的,通常扩展为当前容量的 2 倍或更多。

扩展操作有如下步骤:

  1. 创建一个新的哈希表,大小是原表的两倍。
  2. 将原有的键值对重新哈希并插入新表中。这意味着每个键的哈希值会被重新计算并存储在新的槽位中。
  3. 旧的哈希表被释放,新的哈希表成为当前字典使用的存储区域。
示例:字典扩展前后的行为
# 创建一个字典并不断增加键值对,观察扩展
my_dict = {}
for i in range(100):my_dict[i] = i * 2print(f"Inserted {i}: Dictionary size = {len(my_dict)}")

在这个例子中,随着我们不断向字典中插入新的键值对,字典的大小会逐步增加,当达到一定的数量时(负载因子阈值),字典会进行扩展,分配更多内存以存储新的键值对。

7.3.2 扩展的性能影响

扩展和重新哈希会引起一次性性能开销,但这种操作是为了保持字典整体操作的高效性。在扩展过程中,所有键值对都会被重新分配到新的哈希表中,因此这一过程可能会导致性能下降。但这种性能影响通常是短暂的,且扩展操作发生的频率较低。

7.4 Python 字典的负载因子

字典的扩展阈值是根据其负载因子(load factor)决定的。负载因子定义为:已填充槽位的数量与总槽位数量的比值。Python 字典的负载因子通常设定在 2/3 左右,当填充的槽位达到总槽位的 2/3 时,字典会进行扩展和重新哈希。

高负载因子意味着字典的存储空间得到了充分利用,但这也会增加哈希冲突的可能性,影响字典的查找效率;而低负载因子会减少冲突的发生,但会导致空间浪费。Python 在性能和空间利用之间取得了良好的平衡,确保了大部分场景下的高效操作。

🍀八、字典的高级技巧

8.1 字典推导式

字典推导式是 Python 中一种简洁的方式,用来创建新的字典。它的语法类似于列表推导式,但用于生成键值对。

示例:使用字典推导式创建字典
# 创建一个字典,键是数字,值是它们的平方
squares = {x: x**2 for x in range(6)}
print(squares)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

字典推导式简化了字典的创建过程,特别适合需要从其他可迭代对象生成字典的场景。

8.2 defaultdict 的使用

defaultdictcollections 模块中的一个子类,它提供了给字典设置默认值的功能。使用 defaultdict 可以避免在访问字典不存在的键时抛出 KeyError

示例:使用 defaultdict 进行字符计数
from collections import defaultdictdef char_count(string):count_dict = defaultdict(int)for char in string:count_dict[char] += 1return count_dicttext = "hello world"
count_result = char_count(text)
print(count_result)

在这里,defaultdict(int) 会在遇到新键时自动初始化其值为 0,无需显式检查键的存在。

8.3 OrderedDict 和其他字典子类

在 Python 3.7 之前,字典是无序的,而 OrderedDict 可以保持键值对的插入顺序。在 Python 3.7 及更高版本中,字典本身已经保证了插入顺序,因此 OrderedDict 的使用场景有所减少,但它仍然在某些特殊情况下有用。

示例:使用 OrderedDict
from collections import OrderedDict# 创建一个 OrderedDict
ordered_dict = OrderedDict()
ordered_dict["a"] = 1
ordered_dict["b"] = 2
ordered_dict["c"] = 3# 访问有序字典
for key, value in ordered_dict.items():print(f"{key}: {value}")

OrderedDict 在需要对字典进行有序处理时非常有用,例如需要保存历史记录或按插入顺序遍历键值对的场景。

🍀九、常见的字典相关问题和优化技巧

9.1 如何处理字典的键不存在的情况?

通常我们使用 get() 方法来安全访问字典中的值,它允许在键不存在时返回默认值,从而避免抛出 KeyError

value = person.get("job", "Unknown")  # 如果 "job" 键不存在,则返回 "Unknown"
9.2 如何合并两个字典?

在 Python 3.9 之后,可以使用 | 运算符合并两个字典:

dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}merged_dict = dict1 | dict2
print(merged_dict)  # 输出: {'a': 1, 'b': 3, 'c': 4}

对于早期版本,可以使用 update() 方法或字典推导式。

结语

本文详细介绍了 Python 字典的基础操作和高级应用。我们从字典的定义、创建、修改等基本操作入手,逐步深入到了嵌套字典、字典的性能分析以及高级字典技巧,如字典推导式、defaultdictOrderedDict 等。通过这些内容的学习,开发者不仅能够高效地管理和组织数据,还可以在实际开发中灵活地应用字典解决复杂问题。
在这里插入图片描述

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440678.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【springboot】使用代码生成器快速开发

接上一项目&#xff0c;使用mybatis-plus-generator实现简易代码文件生成 在fast-demo-web模块中的pom.xml中添加mybatis-plus-generator、freemarker和Lombok依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator&…

劳动与科技、艺术结合更好提高劳动教育意义

在中小学教育中&#xff0c;劳动教育是培养学生基本生活技能和劳动习惯的重要环节。但当代的劳动教育不在单纯的劳动&#xff0c;而是劳动技能的提升与学习&#xff0c;通过学习劳动技能与实践活动&#xff0c;强化劳动教育与其他课程的融合&#xff0c;学生深刻理解劳动的意义…

draw.io 设置默认字体及添加常用字体

需求描述 draw.io 是一个比较好的开源免费画图软件。但是其添加容器或者文本框时默认的字体是 Helvetica&#xff0c;一般的期刊、会议论文或者学位论文要求的英文字体是 Times New Roman&#xff0c;中文字体是 宋体&#xff0c;所以一般需要在文本字体选项里的下拉列表选择 …

【2024】前端学习笔记13-JavaScript修改网页样式

学习笔记 1.修改网页样式1.1.修改内联样式(`style`属性)1.2.使用`cssText`属性:2.修改样式类(`classList`属性)2.1.添加和移除类名2.2.切换类名(`toggle`方法)1.修改网页样式 1.1.修改内联样式(style属性) 直接修改元素的style属性: 可以通过获取元素对象,然后直…

代码随想录 | Day29 | 回溯算法:电话号码的字母组合组合总和

代码随想录 | Day29 | 回溯算法&#xff1a;电话号码的字母组合&&组合总和 关于这个章节&#xff0c;大家最好是对递归函数的理解要比较到位&#xff0c;听着b站视频课可能呢才舒服点&#xff0c;可以先去搜一搜关于递归函数的讲解&#xff0c;理解&#xff0c;再开始…

CSS入门

文章目录 CSS入门一、CSS概述1、概述2、CSS的作用3、初体验4、CSS基础语法4、HTML引入CSS 二、选择器 ⭐️⭐️⭐️1、基本选择器2、扩展选择器3、超链接选择器 三、样式权重问题1、权重计算规则2、权重示例3、具体示例4、 !important 四、CSS常用样式1、字体和文本属性2、背景…

2530 电力电子技术

1.晶闸管 视频链接&#xff1a;2.3半控型器件-晶闸管_哔哩哔哩_bilibili 可参考文章链接&#xff1a;电力电子技术笔记&#xff08;3&#xff09;——晶闸管_双晶体管模型正反馈-CSDN博客 半控型器件&#xff1a;门极只有在导通时有用&#xff0c;在关闭时没有用 2.Boost升压…

【C++】二叉搜索树+变身 = 红黑树

&#x1f680;个人主页&#xff1a;小羊 &#x1f680;所属专栏&#xff1a;C 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 前言一、定义与性质二、红黑树节点的定义三、新增节点插入四、验证红黑树五、AVL树和红黑树比较 前言 本文仅适合了…

[3.4]【机器人运动学MATLAB实战分析】PUMA560机器人逆运动学MATLAB计算

PUMA560是六自由度关节型机器人,其6个关节都是转动副,属于6R型操作臂。各连杆坐标系如图1,连杆参数如表1所示。 图1 PUMA560机器人的各连杆坐标系 表1 PUMA560机器人的连杆参数 用代数法对其进行运动学反解。具体步骤如下: 1、求θ1 PMUMA56

MFC有三个选项:MFC ActiveX控件、MFC应用程序、MFC DLL,如何选择?

深耕AI&#xff1a;互联网行业 算法研发工程师 ​ 目录 MFC ActiveX 控件 控件的类型 标准控件 自定义控件 ActiveX控件 MFC ActiveX控件 标准/自定义控件 MFC ActiveX控件分类 3种MFC如何选择&#xff1f; MFC ActiveX控件 MFC 应用程序 MFC DLL 总结 举例说明…

低照度图像增强网络——EnlightenGAN

系列文章目录 GAN生成对抗网络介绍https://blog.csdn.net/m0_58941767/article/details/142704354?spm1001.2014.3001.5501 循环生成对抗网络——CycleGANhttps://blog.csdn.net/m0_58941767/article/details/142704671?spm1001.2014.3001.5501 目录 系列文章目录 前言 …

链表排序

目录 插入排序 LeetCode147 对链表进行插入排序 归并排序 LeetCode148 排序链表 插入排序 LeetCode147 对链表进行插入排序 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}…

深度学习中的优化方法(Momentum,AdaGrad,RMSProp,Adam)详解及调用

深度学习中常用的优化方法包括啦momentum(动量法),Adagrad(adaptive gradient自适应梯度法),RMSProp(root mean square propagation均方根传播算法),Adam(adaptive moment estimation自适应矩估计法) 指数加权平均算法 所谓指数加权平均算法是上述优化算法的基础,其作用是对历…

word无法复制粘贴

word无法复制粘贴 使用word时复制粘贴报错 如下&#xff1a; 报错&#xff1a;运行时错误‘53’&#xff0c;文件未找到&#xff1a;MathPage.WLL 这是mathtype导致的。 解决方法 1&#xff09;在mathtype下载目录下找到"\MathType\MathPage\64"下的"mathpa…

Python并发编程挑战与解决方案

Python并发编程挑战与解决方案 并发编程是现代软件开发中的一项核心能力&#xff0c;它允许多个任务同时运行&#xff0c;提高程序的性能和响应速度。Python因其易用性和灵活性而广受欢迎&#xff0c;但其全局解释器锁&#xff08;GIL&#xff09;以及其他特性给并发编程带来了…

python数据分析与可视化工具介绍-matplotlib库

众所周知&#xff0c;python的数据分析库主要是numpy&#xff0c;pandas&#xff0c;和matplotlib&#xff0c;而前面两个主要是数据处理工具库&#xff0c;最后一个才是真正的作图展示工具库。本节来学习一下matploatlib工具库的使用。 Matplotlib常用绘图函数 pyplot简介 m…

Oracle中TRUNC()函数详解

文章目录 前言一、TRUNC函数的语法二、主要用途三、测试用例总结 前言 在Oracle中&#xff0c;TRUNC函数用于截取或截断日期、时间或数值表达式的部分。它返回一个日期、时间或数值的截断版本&#xff0c;根据提供的格式进行截取。 一、TRUNC函数的语法 TRUNC(date) TRUNC(d…

字符编码发展史5 — UTF-16和UTF-32

上一篇《字符编码发展史4 — Unicode与UTF-8》我们讲解了Unicode字符集与UTF-8编码。本篇我们将继续讲解字符编码的第三个发展阶段中的UTF-16和UTF-32。 2.3. 第三个阶段 国际化 2.3.2. Unicode的编码方式 2.3.2.2. UTF-16 UTF-16也是一种变长编码&#xff0c;对于一个Unic…

1、如何查看电脑已经连接上的wifi的密码?

在电脑桌面右下角的如下位置&#xff1a;双击打开查看当前连接上的wifi的名字&#xff1a;ZTE-kfdGYX-5G 按一下键盘上的win R 键, 输入【cmd】 然后&#xff0c;按一下【回车】。 输入netsh wlan show profile ”wifi名称” keyclear : 输入完成后&#xff0c;按一下回车&…

浏览器前端向后端提供服务

WEB后端向浏览器前端提供服务是最常见的场景&#xff0c;前端向后端的接口发起GET或者POST请求&#xff0c;后端收到请求后执行服务器端任务进行处理&#xff0c;完成后向前端发送响应。 那浏览器前端向后端提供服务是什么鬼&#xff1f; 说来话长&#xff0c;长话短说。我在人…