首页 > 编程语言 >【python图解】数据结构之字典和集合

【python图解】数据结构之字典和集合

时间:2024-11-25 14:33:59浏览次数:9  
标签:图解 python 集合 set1 student scores print 数据结构 字典

【python图解】数据结构之字典和集合

在 Python 中,字典集合是另外的两种重要数据结构,它们分别用于存储键值对和无序的唯一元素集合。下面我们将详细介绍字典和集合的定义、操作方法、使用场景及相关案例。

1. 字典(Dictionary)

字典是一种存储键值对的可变数据类型,它使用大括号 {} 定义,通过键(key)来访问对应的值(value)。字典中的键必须是唯一且不可变的,通常是字符串或数字类型,值可以是任意数据类型。

1.1 创建字典

字典的创建方式包括直接使用大括号或通过内置函数 dict()

# 方式一:使用大括号创建字典
student_scores = {"Alice": 90, "Bob": 80, "Charlie": 85}

# 方式二:使用 dict() 函数
employee_data = dict(name="John", age=30, department="HR")

print(student_scores)  # 输出: {'Alice': 90, 'Bob': 80, 'Charlie': 85}
print(employee_data)   # 输出: {'name': 'John', 'age': 30, 'department': 'HR'}

1.2 访问字典中的值

通过键来访问字典中的值。如果访问不存在的键会引发 KeyError,为此可以使用 get() 方法来安全访问值。

# 直接访问键的值
print(student_scores["Alice"])  # 输出: 90

# 使用 get() 方法
print(student_scores.get("David", "Not Found"))  # 输出: Not Found

1.3 增加和修改元素

字典是可变的数据类型,可以直接通过键进行增加或修改。

# 增加新键值对
student_scores["David"] = 75
print(student_scores)  # 输出: {'Alice': 90, 'Bob': 80, 'Charlie': 85, 'David': 75}

# 修改现有键的值
student_scores["Alice"] = 95
print(student_scores)  # 输出: {'Alice': 95, 'Bob': 80, 'Charlie': 85, 'David': 75}

1.4 删除元素

字典支持使用 del 关键字或 pop() 方法来删除元素。

# 使用 del 删除键值对
del student_scores["Bob"]
print(student_scores)  # 输出: {'Alice': 95, 'Charlie': 85, 'David': 75}

# 使用 pop() 方法删除,并返回被删除的值
removed_score = student_scores.pop("Charlie")
print(removed_score)   # 输出: 85
print(student_scores)  # 输出: {'Alice': 95, 'David': 75}

1.5 遍历字典

可以通过 keys()values() 和 items() 方法来获取字典的键、值和键值对。

# 遍历字典的键
for key in student_scores.keys():
    print(key)

# 遍历字典的值
for value in student_scores.values():
    print(value)

# 遍历字典的键值对
for key, value in student_scores.items():
    print(f"{key}: {value}")

1.6 字典常用方法

  • len(dict): 获取字典中键值对的数量。

  • dict.update(other_dict): 合并另一个字典中的键值对。

  • dict.clear(): 清空字典中的所有元素。

1.7 字典的应用场景

  • 存储和管理配置信息。

  • 快速查找和检索数据。

  • 作为映射表或记录集合。


2. 集合(Set)

集合是一个无序且不重复的元素集合,使用大括号 {} 或 set() 函数创建。集合中的元素必须是不可变的,但集合本身是可变的。

2.1 创建集合

# 使用大括号创建集合
unique_numbers = {1, 2, 3, 4, 4, 5}
print(unique_numbers)  # 输出: {1, 2, 3, 4, 5}(自动去重)

# 使用 set() 函数创建集合
empty_set = set()  # 注意:{} 是空字典,不是集合

2.2 添加和删除元素

集合支持 add()remove() 和 discard() 方法。

my_set = {1,2,3}

# 添加元素
my_set.add(4)
print(my_set)# 输出: {1, 2, 3, 4}

# 删除元素
my_set.remove(2)# 如果元素不存在会引发 KeyError
my_set.discard(3)# 如果元素不存在不会引发错误
print(my_set)  # 输出: {1, 4}

2.3 集合的常用操作

  • 联合(Union)set1 | set2 或 set1.union(set2)

  • 交集(Intersection)set1 & set2 或 set1.intersection(set2)

  • 差集(Difference)set1 - set2 或 set1.difference(set2)

  • 对称差集(Symmetric Difference)set1 ^ set2 或 set1.symmetric_difference(set

set1 = {1,2,3}
set2 ={3,4,5}

# 联合
print(set1 | set2)# 输出: {1, 2, 3, 4, 5}

# 交集
print(set1 & set2)# 输出: {3}

# 差集
print(set1 - set2)# 输出: {1, 2}

# 对称差集
print(set1 ^ set2)  # 输出: {1, 2, 4, 5}

2.4 集合的应用场景

  • 数据去重。

  • 进行集合运算(交集、差集等)。

  • 快速判断某元素是否存在于集合中。


3. 综合案例:使用字典和集合管理学生成绩

假设我们需要管理学生成绩并统计考试分数的唯一值集合。可以使用字典存储每个学生的成绩,用集合计算不同的成绩值。

# 字典存储学生成绩
grades ={
"Alice":[85,90,95],
"Bob":[70,80,90],
"Charlie":[90,85,80]
}

# 计算所有成绩的集合
unique_scores =set()
for scores in grades.values():
    unique_scores.update(scores)

print("学生成绩记录:", grades)
print("所有唯一成绩:", unique_scores)

# 统计每个学生的平均成绩
average_grades ={name: sum(scores)/ len(scores)for name, scores in grades.items()}
print("平均成绩:", average_grades)

总结

  •  字典用于存储键值对,适合快速查找、更新和存储结构化数据。

  •  集合是无序的且元素唯一,适合数据去重和集合操作。

  •  合理使用字典和集合可以提升程序的性能和数据管理能力

标签:图解,python,集合,set1,student,scores,print,数据结构,字典
From: https://blog.csdn.net/weixin_45014634/article/details/144026702

相关文章

  • Python那些事儿 - 函数
    第十回逐鹿中原前言这一回开始给大家介绍函数的相关知识。其实函数对我们来说并不陌生,我们之前见过的print()、input()、len()、count()等都是函数,只不过Python的开发者们把这些函数提前打包好了,我们只需要去调用就可以。如果我们想通过函数来实现想要的功能,那就需要自己......
  • SpringBoot整合MQTT利用EMQX完成消息的发布与接收+Python模拟硬件测试通信
    教程说明本教程主要内容为使用SpringBoot整合MQTT利用EMQX代理服务完成MQTT的消息发送与接收,然后用Python模拟硬件与SpringBoot应用进行了MQTT消息的通信,教程详细,并在最后讲解了开发中的注意事项,本教程适用于物联网领域、JavaWeb领域的开发人员。前置所需已经搭建好了EMQX代......
  • EPS32+DHT11温湿传感器+OLEAD显示屏整合MicroPython实现温湿度读取并显示 - 幽络源
    环境需求Python版本大于等于3.8、Thonny软件、EPS32已烧录MicroPython固件,可参考上一篇文章 ESP32初学教程Python版-从环境搭建到完成控制LED灯闪烁硬件需求EPS32开发板、DHT11的温湿度传感器、OLEAD显示屏、杜邦线、安卓数据线引脚连接DHT11温湿度传感器连接ESP32使用......
  • 逆向python
    Python逆向若下载下来的题目内存比较大,图标是python的图标,拖进ida中一大堆py的这种字符串。即可断定该exe文件是python编写的。解python的exe包工具:pyinstxtractorhttps://github.com/extremecoders-re/pyinstxtractor使用方法:将exe文件拖到与pyinstxtractor同一目录下。Cmd中pyth......
  • python逆向
    Python逆向若下载下来的题目内存比较大,图标是python的图标,拖进ida中一大堆py的这种字符串。即可断定该exe文件是python编写的。解python的exe包工具:pyinstxtractorhttps://github.com/extremecoders-re/pyinstxtractor使用方法:将exe文件拖到与pyinstxtractor同一目录下。Cmd中pyth......
  • 【Python】高效的数据操作利器:Python中的集合运算详解
    《PythonOpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!在现代数据处理任务中,集合操作作为一种高效的数据管理方式,广泛应用于去重、交集、差集等操作。Python的set类型以其强大的功能和直观的语法,成为处理集合运算的首选工具。本篇文章将深入剖析set的工作......
  • [python] asyncio库常见问题与实践案例
    本文详细介绍了在使用asyncio库编写异步程序时常见的错误和问题,并进一步通过实践案例进行分析和讨论,以便在项目中更有效地应用asyncio库。有关asyncio库的详细介绍,可参考:Python异步编程库asyncio使用指北。目录1asyncio程序的常见错误1.1试图直接调用并运行协程1.2主协程过......
  • python中的包和模块(非常详细),零基础入门到精通,看这一篇就够了
    文章目录一、包与模块二、第三方包的安装2.1pipinstall2.2使用curl+管道2.3其他安装方法三、导入单元的构成3.1pip的使用3.2模块的缓存3.3源码包与二进制包四、setup.py的编写零基础入门AI大模型1.学习路线图2.视频教程3.技术文档和电子书4.LLM面试题和面经合......
  • 代码随想录之滑动窗口、螺旋矩阵、区间和、开发商土地;Java之数据结构、集合源码、File
    代码随想录滑动窗口1、如果给两个字符串s和t,判断t是否为s的子串或是否s包含t的排列,用t的长度固定滑动窗口的大小,初始化将s的前t.length()个长度的字符情况存储在int数组中,int数组的大小由字符串中字符的类型决定,最大为ascii表的长度,为128。  每次循环滑动窗口向前移一位,即lef......
  • python-爬虫入门指南
    前言:由于个人负责的运维组,其中有个同事每回在某个项目发版更新后,需手动在k8s容器平台web界面上复制出几百个微服务的名称以及镜像版本等信息,用来更新微服务清单,个人决定抽时间写个爬虫脚本自动完成手动执行的任务。由于公司信息需保密,这里介绍个简单入门的爬虫脚本做为范例......