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

news2024/11/25 0:42:05

在这里插入图片描述

文章目录

    • 前言
    • 🍀一、 什么是 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] += 1
        else:
            count_dict[char] = 1
    return 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 * 2
    print(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 defaultdict

def char_count(string):
    count_dict = defaultdict(int)
    for char in string:
        count_dict[char] += 1
    return count_dict

text = "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.coloradmin.cn/o/2194788.html

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

相关文章

UGUI(三大现成UI控件)

Rawimage 可以是任意类型的图,所以这里的泛型就更宽泛,不止sprite 相比Image唯二的不同 uvrect有点像平铺 Text suddenly come to a Free island. best fit开启后会有范围选择 Image image 组件是挂在RectTransform的ui下的,换句话说&…

秋招内推2025-招联金融

【投递方式】 直接扫下方二维码,或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus,使用内推码 igcefb 投递) 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

OBOO鸥柏丨户外液晶广告机有哪些功能可以定制室外广告牌?

OBOO鸥柏户外液晶广告机,犹如一位多才多艺的传播使者,巧妙融合信息传播、广告盛宴与互动乐园于一体,室外高亮数字标牌成为都市风景中一抹亮丽的智慧之光。鸥柏液晶户外广告牌轻盈穿梭于高速服务区的喧嚣、智慧城市的新能源充电站、收费站的繁…

Linux_kernel字符设备驱动12

一、字符设备的编程框架 在Linux_kernel驱动开发11中,我们介绍的系统调用。只是为了做一个实验,在真正开发时,我们并不会直接在内核中添加一个新的系统调用,这样做会导致内核体积变大。 1、字符设备结构体 我们实现一个硬件字符设…

WPF|依赖属性SetCurrentValue方法不会使绑定失效, SetValue方法会使绑定失效?是真的吗?

引言 最近因为一个触发器设置的结果总是不起效果的原因,进一步去了解[依赖属性的优先级](Dependency property value precedence - WPF .NET | Microsoft Learn)。在学习这个的过程中发现对SetCurrentValue一直以来的谬误。 在WPF中依赖属性Dependency property的…

力扣 中等 216组合总和III

文章目录 题目介绍解法 题目介绍 解法 是77.组合链接的扩展 class Solution {List<List<Integer>> result new ArrayList<>();List<Integer> path new ArrayList<>();public List<List<Integer>> combinationSum3(int n, int k) …

流速仪设备操作说明

1 流速仪设备安装 按图示对流速仪设备进行安装&#xff0c;主要是流速仪和电频。 连接电脑&#xff0c;直接插上信号接收器&#xff0c;后面使用蓝牙连接。 2 安装软件 3 双击ParaniWin进行设备连接 3.1 按图片所示&#xff0c;设置端口等信息 3.2 Device Setting —>输…

2024软件设计师高频考点体系—软件工程体系考点大全

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 更多高频考点&#x1f9e7;&#x1f7e5;软件设计师高频考点电子手册✨点击进入&#x1f381;&#x1f7e6; 软件设计师高频考点…

力扣59.螺旋矩阵||

题目链接&#xff1a;59. 螺旋矩阵 II - 力扣&#xff08;LeetCode&#xff09; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff…

【C/C++】错题记录(五)

题目一 题目二 在 16 位机器上&#xff0c;通常以 2 字节为边界对齐。 首先看 char a&#xff0c;它占用 1 个字节。接着是 int b&#xff0c;占用 2 个字节。由于要满足边界对齐&#xff0c;在 char a后面会填充 1 个字节&#xff0c;使得 int b从 2 字节边界开始存储。最后是…

TMGM开户后还可以开代理账户吗

在TMGM平台进行交易的人也想开立代理账户。那么&#xff0c;TMGM的代理账户如何开设&#xff1f;答案是&#xff1a;首先需要先开设个人交易账户&#xff0c;然后再申请成为代理商。 1. 先开个人交易账户 在TMGM开设代理账户的首要步骤是先拥有一个个人交易账户。您可以通过访…

Carsim报错总结及解决方法

1. simulink报错&#xff1a;vs_state 、StopMode无法识别 - matlab命令行窗口输入&#xff1a;vs_state -1&#xff0c;StopMode -1 2. Video变暗&#xff0c;无法点击 - 说明书中提示&#xff1a;如果输出文件不存在&#xff08;例如&#xff0c;在单击复制按钮创…

身份证二要素-身份证二要素接口-身份证尔雅欧批量核验

身份证批量核查简介&#xff1a;【身份证批量核查】极速查询、多线程、高并发&#xff0c;可批量上传excel文件&#xff0c;2万条数据约30分钟核验完成。无需技术参与、自主便捷查询 1、登录后&#xff0c;点击右上角【个人中心】按钮&#xff0c;进入个人中心页面 2、进入个…

基于单片机的信号选择与温度变化

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采用DS18B20检测温度&#xff0c;通过三种LED灯代表不同状态。 采用DAC0832显示信号脉冲&#xff0c;通过8位数码管显示温度。 信号脉冲可以根据两个按键分别调整为正弦…

5G NR 切换流程简介

文章目录 切换类型分类切换步骤测量事件分类5G NR系统内切换信令流程 切换类型分类 5G NR 的切换类型分为 系统间切换和系统内切换&#xff0c;而 系统间切换又分为 5G NR 与 4G LTE 和5G NR 与3G WCDMA的切换。站内切换则分为站内切换和站间间切换。 切换步骤 主要分为三个阶…

边缘端大模型是怎么部署的?重点关注哪些?

写在前面 在设备端运行的大语言模型&#xff08;LLMs&#xff09;&#xff0c;即指在边缘设备上运行LLMs&#xff0c;因其出色的隐私保护、低延迟和节省带宽的特点而引起了广泛关注。然而&#xff0c;与功能更为强大的云中心相比&#xff0c;设备端LLMs的能力本质上受到边缘设…

高效数据处理:MapReduce与Hive的实战应用

文章目录 hive分析汇总互联网日志分析1.项目需求2.数据说明3.算法思路 用户电影推荐1.项目需求2.数据说明3.算法思路4.解题步骤 简单数据统计WordCount数据说明 疫情数据分析1.项目需求2.数据说明step1:创建ods层数据表step2&#xff1a;创建dwd层数据表step3&#xff1a;创建d…

Vue84 vue3项目结构分析

打开main.js文件&#xff0c;发现和vue2不同 //引入的不再是Vue构造函数了&#xff0c;引入的是一个名为createApp的工厂函数 import { createApp } from vue import App from ./App.vue//创建应用实例对象——app(类似于之前Vue2中的vm&#xff0c;但app比vm更“轻”) const …

D29【python 接口自动化学习】- python基础之输入输出与文件操作

day29 格式化输出 学习日期&#xff1a;20241006 学习目标&#xff1a;输入输出与文件操作&#xfe63;-41 格式化输出&#xff1a;如何将执行结果通过屏幕输出&#xff1f; 学习笔记&#xff1a; 三种常用的格式化输出方式 百分号方式 format函数方式 总结 1. 格式化输出…

win10服务器启动且未登录时自动启动程序

场景&#xff1a;公司服务器安装了几个程序&#xff0c;当服务器断电重启之后希望程序能自动打开&#xff0c;而不需要手动登录服务器打开。 因为软件是自己开发的所以安全方面这里没有考虑。 1.打开服务器管理器&#xff0c;点击工具&#xff0c;选择任务计划程序 2.在任务计…