字典百宝箱
字典通过键来存取值,键必须是不可变类型(字符串、数字、元组),值可以是任意类型。
访问元素:d[key] vs d.get()
键:
默认值:
增加 / 修改
键:
值:
删除
键:
遍历
d.keys()
d.values()
d.items()
键的不可变特性
字典的键必须是不可变类型。字符串、数字、元组可以作键,列表和字典不能。
update() 与 setdefault()
update 输入:
setdefault 键:
默认值:
练一练:创建联系人字典
请在下方输入框中创建一个包含
name、phone、email 三个键的字典,然后删除 phone 键。
name:
phone:
email:
元组实验室
元组用圆括号
() 创建,是一种不可变序列。一旦创建,不能增删改元素。 不可变 — 创建后无法修改
尝试修改(会失败)
索引:
新值:
切片访问
起始:
结束:
步长:
解包赋值
变量交换:a, b = b, a
a
5
b
10
单元素陷阱
与列表对比
访问 [0]
切片 [1:3]
修改 [0]=99
追加 append
拼接 + (5,6)
tuple 元组
VS
list 列表
count() 与 index()
值:
嵌套可变对象
元组本身不可变,但如果元素是列表等可变对象,可以修改该对象的内容(但不能替换整个元素)。
练一练:交换变量
用元组解包交换
x 和 y 的值,验证交换后结果。
x =
y =
集合工作室
集合用花括号
{} 创建,元素自动去重且无序。空集合必须用 set()({} 是空字典)。
输入值(逗号分隔):
原始列表:
集合(去重后):
增删元素
值:
集合运算(韦恩图)
A = {1, 2, 3, 4},B = {3, 4, 5, 6}。点击按钮查看运算结果。
仅在 A
A ∩ B
仅在 B
运算结果:
成员判断
值:
集合推导式
{x**2 for x in range(6)}
{x%3 for x in range(10)}
{c for c in "hello" if c!="l"}
不可变集合 frozenset(简介)
frozenset 是集合的不可变版本,可以作为字典的键或放入其他集合中。 练一练:求两个列表的交集
给定两个列表,用集合求它们的公共元素。
列表A:
列表B:
小测验
d = {"x": 10},d.get("y", 0) 的结果是?以下哪个操作对元组
t = (1, 2, 3) 会引发错误?len({1, 2, 2, 3, 3, 3}) 和 {1,2,3} & {2,3,4} 分别是?以下哪个不能作为字典的键?
执行
a, b = (1, 2) 后再执行 a, b = b, a,a 和 b 的值是?