字典与集合:键约束、哈希与视图
字典基础
字典存储键值对,键必须可哈希。
python
person = {'name': 'Alice', 'age': 30, 'city': 'NYC'}
print(person['name']) # 'Alice'
person['email'] = 'alice@example.com' # 添加
person['age'] = 31 # 修改
del person['city'] # 删除
# 安全访问
print(person.get('phone', 'N/A')) # 'N/A'(不存在)字典方法
python
d = {'a': 1, 'b': 2}
d.keys() # dict_keys(['a', 'b'])
d.values() # dict_values([1, 2])
d.items() # dict_items([('a', 1), ('b', 2)])
d.update({'c': 3, 'a': 10}) # 合并
popped = d.pop('b') # 弹出键
d.setdefault('d', 0) # 存在则返回,不存在则设置字典推导式
python
squares = {x: x**2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
filtered = {k: v for k, v in squares.items() if v > 5}
# {3: 9, 4: 16}集合
集合是无序、无重复的可哈希对象集合。
python
fruits = {'apple', 'banana', 'cherry'}
fruits.add('date')
fruits.remove('banana')
# 集合运算
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}(对称差)可哈希类型
可作为字典键或集合元素的类型:
- 可哈希:int, float, str, tuple(元素也可哈希), frozenset
- 不可哈希:list, dict, set
python
# 正确
d = {(1, 2): 'point'}
# 错误
# d = {[1, 2]: 'point'} # TypeError练习
- 词频统计:统计字符串中每个单词出现次数。
- 字典合并:合并两个字典,后者覆盖前者。
- 集合去重:用集合去除列表重复元素。
- 两个列表的交集:找出两个列表的公共元素。
- 字典反转:交换字典的键和值。
答案:第三章答案
下一节:字符串与Unicode