字典百宝箱

字典通过来存取,键必须是不可变类型(字符串、数字、元组),值可以是任意类型。

访问元素:d[key] vs d.get()

键: 默认值:

增加 / 修改

键: 值:

删除

键:

遍历

d.keys()
d.values()
d.items()

键的不可变特性

字典的键必须是不可变类型。字符串、数字、元组可以作键,列表和字典不能。

update() 与 setdefault()

update 输入:
setdefault 键: 默认值:
练一练:创建联系人字典
请在下方输入框中创建一个包含 namephoneemail 三个键的字典,然后删除 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()

值:

嵌套可变对象

元组本身不可变,但如果元素是列表等可变对象,可以修改该对象的内容(但不能替换整个元素)。
练一练:交换变量
用元组解包交换 xy 的值,验证交换后结果。
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, aab 的值是?