解锁 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.mzph.cn/web/54529.shtml

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

相关文章

华为仓颉语言入门(9):for-in表达式

for-in 表达式用于遍历序列,它会依次访问序列中的每个元素,直到遍历完成。它常用于处理列表、数组或其他集合类型,能够有效简化代码,减少重复劳动。其基本语法如下: for (循环变量 in 序列) {循环体 }在 for-in 表达式中,每次循环都会检查是否遍历了序列中的所有元素。如…

【代码随想录Day34】动态规划Part03

0-1 背包问题 二维 题目链接/文章讲解:代码随想录 视频讲解:带你学透 0-1 背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili import java.uti…

基于SSM的仿win10界面的酒店管理系统

基于SSM的仿win10界面的酒店管理系统 运行环境: jdk1.8 eclipse tomcat7 mysql5.7 项目技术: jspssm(springspringmvcmybatis)mysql 项目功能模块:基础功能、房间类型、楼层信息、附属功能

【Ubuntu】DNS设置不生效/重启被重置

/etc/resolv.conf 是一个链接,指向/run/systemd/resolve/stub-resolv.conf , ubuntuVM-4-13-ubuntu:/run/systemd/resolve$ ll /etc/resolv.conf lrwxrwxrwx 1 root root 39 Sep 30 14:40 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.…

大数据新视界 --大数据大厂之大数据驱动智能客服 -- 提升客户体验的核心动力

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

HUAWEI New4.9G 与 2.6G 无法正常切换问题处理案例

HUAWEI New4.9G 与 2.6G 无法正常切换问题处理案例 在某地市的 XX 音乐节保障准备期间,为确保活动期间的网络质量,现场新开了 4.9G HUAWEI 室外基站。在网络优化和测试中,发现UE无法实现从 2.6G 到 4.9G 的正常切换。虽然现场具备 4.9G信号覆…

【Router】路由功能之IP过滤(IP Filter)功能(基于端口)介绍及实现

IP过滤(IP Filter) IP Filter是一种通过对网络数据包中的 IP 地址进行分析和筛选,以实现对网络流量的控制和管理的技术。 IP过滤(IP Filter)作用 安全防护 可以阻止来自特定 IP 地址或 IP 地址范围的恶意攻击、非法访问等,增强网络的安全性。 流量管理 根据不同的 IP …

深度解析:Tkinter 界面布局与优化技巧

目录 深度解析:Tkinter 界面布局与优化技巧1. Tkinter 布局管理简介如何选择合适的布局管理器 2. pack() 布局管理详解嵌套布局 3. grid() 布局管理详解行列合并 4. place() 精确布局详解5. Tkinter 界面优化技巧自适应布局响应式布局资源管理 6. 项目示例&#xff…

每日OJ题_牛客_组队竞赛_贪心_C++_Java

目录 牛客_组队竞赛_贪心 题目解析 C代码1 C代码2 Java代码 牛客_组队竞赛_贪心 组队竞赛_牛客笔试题_牛客网 (nowcoder.com) 描述: 牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个…

【SQL】深入理解SQL:从基础概念到常用命令

目录 1. SQL基础概念1.1 数据库与表1.2 行与列1.3 数据库与表结构示意图 2. 常用SQL命令3. DML 命令3.1 SELECT语句3.2 INSERT语句3.3 UPDATE语句3.4 DELETE语句 4. DDL 命令3.4.1 CREATE 命令3.4.2 ALTER 命令3.4.3 DROP 命令 5. DCL 命令3.6.1 GRANT 命令3.6.2 REVOKE 命令 学…

【自然语言处理】补充:基于向量空间的分类器

【自然语言处理】补充:基于向量空间的分类器 文章目录 【自然语言处理】补充:基于向量空间的分类器1. 特征选择2. 基于向量空间的分类方法3. Rocchio4. KNN5. 线性分类器1. 特征选择 特征选择 文本分类中,通常要将文本表示在一个高维空间下,每一维对应一个词项许多维上对应…

VMware WorkStation Pro 15.5(低版本安装) 教学用

VMware WorkStation Pro 15.5(低版本安装) 教学用 文章目录 VMware WorkStation Pro 15.5(低版本安装) 教学用前言安装使用 前言 VMware Workstation Pro 15.5 是一款功能强大的桌面虚拟化软件,适用于在单台物理电脑上运行多个操作系统。它被广泛应用于软件开发、测…

PHP泛目录生成源码,可生成长尾关键词页面,带使用方法视频教程

介绍: 真正的好东西,搞网站优化seo从业必备。可以快速提升网站权重,带来的流量哗哗的 PHP泛目录生成源码 可生成新闻页面和关键词页面 带使用方法视频教程 泛目录可以用来提升网站收录和排名 合理运用目录可以达到快速出词和出权重的效果…

WDG看门狗在stm32中的应用

一,WDG看门狗的介绍 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性看…

精确度和召回率

精确度(Precision)和召回率(Recall)是评估分类模型性能的两个重要指标,尤其在处理不平衡数据集时非常有用。它们通常用于二分类问题,但也可以扩展到多分类问题。 精确度(Precision)…

论文推荐 |【Agent】自动化Agent设计系统

论文标题: Automated Design of Agentic Systems 论文地址: https://arxiv.org/abs/2408.08435 GitHub地址: https://github.com/ShengranHu/ADAS 自动化代理设计在性能和通用性方面显著超越了手动方法。 • 引入了自动化代理系统设计&am…

JS模块化工具requirejs详解

文章目录 JS模块化工具requirejs详解一、引言二、RequireJS 简介1、什么是 RequireJS2、RequireJS 的优势 三、RequireJS 的使用1、配置 RequireJS1.1、基础配置 2、定义模块3、加载模块 四、总结 JS模块化工具requirejs详解 一、引言 随着前端技术的快速发展,Jav…

这些编程工具竟然能让我效率翻倍?开发者必备神器盘点!

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

在找工作吗?给你一个AI虚拟面试官助力你提前准备面试

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 让AI点亮我们的生活,是Shelly对…

Lab4 【哈工大_操作系统】进程运行轨迹的跟踪与统计

本节将更新哈工大《操作系统》课程第四个 Lab 实验 进程运行轨迹的跟踪与统计。按照实验书要求,介绍了非常详细的实验操作流程,并提供了超级无敌详细的代码注释。 实验目的: 掌握 Linux 下的多进程编程技术;通过对进程运行轨迹的…