Python-元组、字典与集合

📅 2026/7/19 5:45:13
Python-元组、字典与集合
今天学另外三种容器元组不可变列表、字典键值对、集合不重复。一、元组 Tuple1.1 特点有序、不可变创建后不能增删改元素用圆括号()表示可以作为字典的 key列表不行1.2 创建与访问t1 (1, 2, 3) t2 1, 2, 3 # 括号可省略 t3 tuple([1, 2, 3]) # ⚠️ 单元素元组必须加逗号 t4 (42,) # 元组 t5 (42) # 这是 int 42不是元组 print(t1[0]) # 1 print(t1[-1]) # 3 print(t1[1:3]) # (2, 3) print(len(t1)) # 31.3 不可变性t (1, 2, 3) # t[0] 10 # TypeError! # 但如果元素是可变对象如列表列表内容可以变 t2 (1, [2, 3]) t2[1].append(4) # 合法t2 变为 (1, [2, 3, 4])1.4 元组解包point (10, 20) x, y point # 交换变量经典用法 a, b 1, 2 a, b b, a # 带 * 的解包 first, *rest (1, 2, 3, 4, 5) print(first) # 1 print(rest) # [2, 3, 4, 5]1.5 函数返回多个值def get_user(): return 张三, 20, 北京 # 实际返回元组 name, age, city get_user()二、字典 Dictionary2.1 特点键值对key-value存储键不可变且唯一str、int、tuple 等Python 3.7保持插入顺序可变类比字典像通讯录——通过姓名key查找电话value。2.2 创建d1 {name: 张三, age: 20, city: 北京} d2 dict(name李四, age22) d3 dict([(a, 1), (b, 2)]) d4 {} # 空字典2.3 增删改查person {name: 张三, age: 20} # 查 print(person[name]) # 键不存在 → KeyError print(person.get(phone, 无)) # 安全访问默认值 # 增 / 改同一个操作 person[phone] 13800138000 # 新增 person[age] 21 # 修改 # 删 del person[phone] value person.pop(age) # 删除并返回值 person.clear()2.4 常用方法d {a: 1, b: 2, c: 3} print(d.keys()) # dict_keys print(d.values()) # dict_values print(d.items()) # dict_items print(len(d)) # 3 # 遍历 for key in d: print(key, d[key]) for key, value in d.items(): print(f{key} - {value})2.5 字典推导式squares {x: x**2 for x in range(6)} # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}2.6 合并字典d1 {a: 1, b: 2} d2 {b: 3, c: 4} merged d1 | d2 # {a: 1, b: 3, c: 4}三、集合 Set3.1 特点无序、不重复、可变基于哈希表成员检测极快用{}表示但{}是空字典空集合用set()3.2 创建s1 {1, 2, 3} s2 set([1, 2, 2, 3]) # {1, 2, 3} 自动去重 s3 set(hello) # {h, e, l, o} s4 set() # 空集合3.3 增删s {1, 2, 3} s.add(4) s.update([5, 6]) s.remove(1) # 不存在报 KeyError s.discard(10) # 不存在不报错 s.pop() # 随机弹出一个 s.clear()3.4 集合运算a {1, 2, 3, 4} b {3, 4, 5, 6} print(a | b) # 并集 {1,2,3,4,5,6} print(a b) # 交集 {3, 4} print(a - b) # 差集 {1, 2} print(a ^ b) # 对称差集 {1, 2, 5, 6}3.5 应用场景去重list(set(lst))成员检测比列表快数学集合运算四、五大容器总结类型有序可变重复语法典型用途str✅❌✅abc文本list✅✅✅[1,2]动态数据tuple✅❌✅(1,2)固定数据、函数返回dict✅✅key唯一{k:v}映射关系set❌✅❌{1,2}去重、集合运算五、练习题基础题1.创建元组(1,2,3,4,5)取第一个、最后一个、中间三个。2.创建学生字典完成增删改查。3.统计hello world hello python每个单词出现次数用字典。4.列表[1,2,2,3,3,3,4]用 set 去重。5.a{1,2,3,4}和b{3,4,5,6}求交集、并集、差集。进阶题6.合并两个字典键冲突时保留第二个的值。7.找出两个列表的共同元素用 set。参考答案点击展开参考答案# 1. t (1, 2, 3, 4, 5) print(t[0], t[-1], t[1:4]) # 3. 词频 text hello world hello python count {} for word in text.split(): count[word] count.get(word, 0) 1 # 4. lst [1, 2, 2, 3, 3, 3, 4] unique list(set(lst)) # 6. d1 {a: 1, b: 2} d2 {b: 3, c: 4} merged d1 | d2 # 7. a [1, 2, 3, 4] b [3, 4, 5, 6] common list(set(a) set(b))