python入门笔记5-集合与字典

server/2025/2/22 0:50:37/

元组

Python 的元组(tuple,简写为tup)与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号​()​,列表使用方括号​[]​。

好处就是节省内存。

集合

  • 集合是无序、不重复元素的容器。

  • 用 {} 或 set() 创建,但空集合必须用 set(){} 会创建空字典)。

  • 元素必须是不可变类型(如数字、字符串、元组),不能是列表或字典。

python">s1 = {1, 2, 3}            # 直接定义集合
print("s1",s1)
s2 = set([1, 2, 3, 2])    # 从列表转集合(自动去重):{1, 2, 3}
print("s2",s2)
s3 = set("hello")         # 从字符串转集合:{'h', 'e', 'l', 'o'}
print("s3",s3)
empty_set = set()          # 空集合(注意:不是 {},那是字典)
print("empty_set",empty_set)

s1 {1, 2, 3}
s2 {1, 2, 3}
s3 {'l', 'o', 'e', 'h'}
empty_set set()

添加删除元素

python">#添加元素
s = {1, 2}
s.add(3)          # 添加单个元素 → {1, 2, 3}
s.update([4, 5])  # 添加多个元素 → {1, 2, 3, 4, 5}
print("s",s)
#删除元素
s.remove(3)       # 删除元素(元素不存在则报错 KeyError)
print("s 删除元素",s)
s.discard(6)      # 删除元素(元素不存在不报错)
print("s 删除不存在元素",s)
s.pop()           # 随机删除并返回一个元素(集合无序)
print("s 随机删除元素",s)
s.clear()         # 清空集合 → set()
print("s 清空",s)

s {1, 2, 3, 4, 5}
s 删除元素 {1, 2, 4, 5}
s 删除不存在元素 {1, 2, 4, 5}
s 随机删除元素 {2, 4, 5}
s 清空 set()

集合运算

python">a = set('abracadabra')
b = set('alacazam')print("a",a)
print("b",b)print("a集合中b没有的元素",a-b)
print("并集:",a|b)
print("交集",a&b)
print("不同时包含于a和b的元素",a^b)

a {'a', 'b', 'c', 'd', 'r'}
b {'a', 'm', 'z', 'c', 'l'}
a集合中b没有的元素 {'d', 'b', 'r'}
并集: {'a', 'm', 'b', 'z', 'c', 'd', 'l', 'r'}
交集 {'a', 'c'}
不同时包含于a和b的元素 {'d', 'l', 'r', 'm', 'b', 'z'}

其他方法

python">#成员检测
s = {1, 2, 3}
print("2 in s:",2 in s)   # 输出 True
#子集/超集判断
a = {1, 2}
b = {1, 2, 3}
print('a.issubset(b):',a.issubset(b))    # True(a 是 b 的子集)
print('b.issuperset(a):',b.issuperset(a))  # True(b 是 a 的超集)
#集合推导式
s = {x for x in range(10) if x % 2 == 0}  # {0, 2, 4, 6, 8}
print("s:",s)

2 in s: True
a.issubset(b): True
b.issuperset(a): True
s: {0, 2, 4, 6, 8}


总结:

  • 核心特性:无序、不重复、高效成员检测。

  • 适用场景:去重、集合运算(如交集、并集)、快速查找元素。

字典

在Python3中字典(dictionary ,简写为dict)是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 (​key=>value​) 对用冒号 (:) 分割,每个对之间用逗号 (,) 分割,整个字典包括在花括号 ({}​) 中 ,格式如下:

dict = {key1 : value1, key2 : value2 }
键必须是唯一的,不可变,如字符串,数字或元组。

python"># 直接定义字典
d1 = {"name": "Alice", "age": 25}
print("d1",d1)
d2 = dict(name="Bob", age=30)        # 通过关键字参数创建
print("d2",d2)
# 空字典
empty_dict = {}                      # 或 dict()# 从键值对列表创建
d3 = dict([("id", 1001), ("city", "Paris")])  # {'id': 1001, 'city': 'Paris'}
print("d3",d3)

d1 {'name': 'Alice', 'age': 25}
d2 {'name': 'Bob', 'age': 30}
d3 {'id': 1001, 'city': 'Paris'}

访问

python">d = {"name": "Alice", "age": 25}
print(d["name"])        # 直接访问 → "Alice"(键不存在会报 KeyError)
print(d.get("age"))     # 安全访问 → 25(键不存在返回 None)
print(d.get("gender", "N/A"))  # 指定默认值 → "N/A"

添加删除

python">#添加
d1 = {"name": "Alice"}
d1["age"] = 25           # 添加新键值对 → {"name": "Alice", "age": 25}
print('after add,d1:',d1)
d1["name"] = "Bob"       # 修改现有键的值 → {"name": "Bob", "age": 25}
print('after update,d1:',d1)
#删除
del d1["age"]
print('after del,d1:',d1)
value = d1.pop("name")## 删除键 "name" 并返回值 → value
print("value:",value)

after add,d1: {'name': 'Alice', 'age': 25}
after update,d1: {'name': 'Bob', 'age': 25}
after del,d1: {'name': 'Bob'}
value: Bob


常用方法

python">#成员检测
d2 = {"a": 1, "b": 2}
print('"a" in d2:',"a" in d2)     # 检查键是否存在 → True
print('1 in d2.values():',1 in d2.values())  # 检查值是否存在 → True
#遍历字典
price = {'包子': 12, '油条': 2,'豆腐脑': 5}
for key in price:           # 遍历键print(key, price[key])
# for key, value in price.items():  # 同时遍历键值对
#     print(key, value)

"a" in d2: True
1 in d2.values(): True
包子 12
油条 2
豆腐脑 5

应用:

python">#统计词频
text = "apple banana apple orange banana"
words = text.split()
frequency = {}
for word in words:frequency[word] = frequency.get(word, 0) + 1
print('frequency',frequency)
#配置
config = {"debug_mode": True,"max_connections": 10,"allowed_ports": [80, 443, 8080]
}
print("allowed_ports",config["allowed_ports"])

frequency {'apple': 2, 'banana': 2, 'orange': 1}
allowed_ports [80, 443, 8080]

总结

  • 核心特性:键值对映射、快速查找、键不可变。

  • 适用场景:数据关联存储(如JSON)、配置管理、缓存、快速查找数据。


http://www.ppmy.cn/server/169707.html

相关文章

ref() 和 reactive()响应性 浅解

文章目录 1. ref() 和 reactive() 的区别2. 解构 详解2.1. 什么是解构2.2. 解构避免丢失响应性的办法2.2.1. 解决方案:toRefs() 保持响应性2.2.2. 解决方案: toRef()保持响应性 3. 最佳实践 在 Vue 3 中,ref() 和 reactive() 都是用于响应式数…

iOS 中使用 FFmpeg 进行音视频处理

在 iOS 中使用 FFmpeg 进行音视频处理,通常需要将 FFmpeg 的功能集成到项目中。由于 FFmpeg 是一个 C 库,直接在 iOS 中使用需要进行一些配置和封装。 1. 在 iOS 项目中集成 FFmpeg 方法 1:使用 FFmpeg 预编译库 下载 FFmpeg iOS 预编译库: 可以从以下项目中获取预编译的 …

拆解微软CEO纳德拉战略蓝图:AI、量子计算、游戏革命如何改写未来规则!

2025年2月19日 知名博主Dwarkesh Patel对话微软CEO萨蒂亚纳德拉 在最新访谈释放重磅信号:AI将掀起工业革命级增长,量子计算突破引爆材料科学革命,游戏引擎进化为世界模拟器。 整个视频梳理出几大核心观点,揭示科技巨头的未来十年…

el-message自定义HTML包含按钮点击事件

关键代码 ElMessage({dangerouslyUseHTMLString: true,message: <span>请先维护供暖季信息</span> <el-button click${{go}} type"success" size"small" id"message-button">立即设置</el-button>,type: "error…

请解释一下Standford Alpaca格式、sharegpt数据格式-------deepseek问答记录

1 Standford Alpaca格式 json格式数据。Stanford Alpaca 格式是一种用于训练和评估自然语言处理&#xff08;NLP&#xff09;模型的数据格式&#xff0c;特别是在指令跟随任务中。它由斯坦福大学的研究团队开发&#xff0c;旨在帮助模型理解和执行自然语言指令。以下是该格式的…

python中格式化输出知识点汇总

在Python中&#xff0c;格式化输出是一种常见的操作&#xff0c;用于将数据以特定的格式展示。以下是Python中格式化输出的主要方法&#xff1a; 1. 使用 % 操作符 这是Python早期版本中常用的格式化方法&#xff0c;类似于C语言中的 printf 。 基本语法 &#xff1a; "…

leetcode 2435. 矩阵中和能被 K 整除的路径

题目如下 数据范围 本题同样是由于一个坐标对应的状态数不唯一所以需要三维数组来存储状态并转移。 显然我们无需关心具体的数只需要计算余数即可&#xff08;&#xff08;a b&#xff09;% k a % k b % k&#xff09; 所以我们用余数的可能取值(0 到 k - 1)作为状态。通…

开放表格式和对象存储架构指南

比较 Apache Iceberg、Delta Lake 和 Apache Hudi&#xff0c;并了解如何为您的数据湖仓一体选择合适的开放表格式。开放表格式和对象存储正在重新定义组织构建其数据系统的方式&#xff0c;为可扩展、高效且面向未来的数据湖仓一体奠定了基础。通过利用对象存储的独特优势&…