字典和集合分不清?这一节一次讲透Python 基础 · 第十节 | 键值对、get()、遍历、集合去重与运算全掌握💡 先问你一个问题
写了 info = {"name": "tom"} 之后,想取一个不存在的键 info["score"],程序直接报 KeyError?还有,字典和集合都用 {} 表示,到底怎么区分?这节课一次讲清,让你彻底告别踩坑。
🎯 本节目标
搞懂字典「键值对」结构,掌握 get() 安全取值、pop()/del 删除、keys()/values()/items() 遍历;理解集合自动去重,掌握交集 &、并集 |、差集 -。
| |
|---|
| 字典 dict | |
| get() | |
| keys()/values()/items() | |
| 集合 set | |
| |
字典用 {} 表示,存的是键值对(key-value),通过「键」来访问「值」。它不像列表靠下标定位,而是像查字典一样按名字找。
info = {"name": "tom", "age": 17, "gender": "male"}# 获取值:[] vs get()print(info["name"]) # tomprint(info.get("age")) # 17print(info.get("score")) # None(不存在不报错)print(info.get("score", 0)) # 0(不存在返回默认值)⚠️ 避坑:用 info["score"] 取不存在的键会报 KeyError。不确定键在不在时,优先用 get(),还能传第二个参数当默认值。
字典加新键、改旧值,都是一句赋值搞定:键存在就改,不存在就添加。
# 添加新键值对info["score"] = 95print(info) # {'name': 'tom', 'age': 17, 'gender': 'male', 'score': 95}# 修改已有键的值info["age"] = 18print(info) # {'name': 'tom', 'age': 18, ...}pop() 删除键的同时返回它的值,del 则单纯删掉:
# pop() 删除并返回值gender = info.pop("gender")print(gender) # maleprint(info) # {'name': 'tom', 'age': 18, 'score': 95}# del 删除指定键del info["score"]print(info) # {'name': 'tom', 'age': 18}1.3遍历字典:keys() / values() / items()三个方法各取所需:keys() 取键、values() 取值、items() 键值对一起拿。
# keys() 获取所有键print(info.keys()) # dict_keys(['name', 'age', 'gender'])for key in info.keys():print(key)# values() 获取所有值print(info.values()) # dict_values(['tom', 17, 'male'])for value in info.values():print(value)# items() 获取所有键值对for key, value in info.items():print(f"{key} → {value}")▶ 运行结果
name → tomage → 17gender → male集合也用 {} 表示,存的是不重复的元素,会自动去重。注意:空集合必须用 set() 创建,写 {} 会被当成空字典!
# 创建集合numbers = {1, 2, 3, 3, 2, 1}print(numbers) # {1, 2, 3}(自动去重)print(type(numbers)) # <class 'set'># 空集合empty_set = set() # 空集合empty_dict = {} # 这是空字典,不是空集合!print(type(empty_set)) # <class 'set'>print(type(empty_dict)) # <class 'dict'>📌 小技巧:set() 和 {} 是最容易踩的坑——记住 「空字典用 {},空集合用 set()」。
fruits = {"苹果", "香蕉"}fruits.add("橘子")print(fruits) # {'橘子', '苹果', '香蕉'}fruits.add("苹果") # 重复添加不会报错,但不会增加print(fruits) # {'橘子', '苹果', '香蕉'}(不变)2.2删除元素:remove() vs discard()两者都能删元素,区别在删除不存在的元素时:remove() 会报错,discard() 静默忽略。
fruits = {"苹果", "香蕉", "橘子"}# remove() 删除指定元素(不存在会报错)fruits.remove("香蕉")print(fruits) # {'橘子', '苹果'}# discard() 删除指定元素(不存在不会报错)fruits.discard("西瓜") # 无此元素,但不会报错fruits.discard("苹果")print(fruits) # {'橘子'}⚠️ 避坑:不确定元素在不在,就用 discard(),避免程序因元素不存在而崩溃。
集合支持数学里的集合运算,做「共同好友」「去重合并」等超方便:
a = {1, 2, 3, 4, 5}b = {4, 5, 6, 7, 8}# 交集 &:两个集合都有的元素print(a & b) # {4, 5}# 并集 |:合并两个集合的所有元素(去重)print(a | b) # {1, 2, 3, 4, 5, 6, 7, 8}# 差集 -:在 a 中但不在 b 中的元素print(a - b) # {1, 2, 3}print(b - a) # {8, 6, 7}📌 集合的特点:① 自动去重 ② 元素无序 ③ 支持数学集合运算。常用于「去重」和「成员关系判断」。
📝 一节课,收获这些
✔ 字典 {} 是键值对结构,通过「键」访问「值」
✔ get() 安全取值(不存在不报错、可设默认值),比 [] 更稳
✔ 删除用 pop()/del;遍历用 keys()/values()/items()
✔ 集合 set 自动去重,空集合用 set() 而非 {}
✔ 集合运算:交集 &、并集 |、差集 -
NEXT · 下一节预告
🚀 函数基础:把重复代码装进「函数」里,一次定义处处调用!
觉得有用?点个「♥」,下次忘了对着查 💛
关注我,零基础 Python 入门系列持续更新中