6. 字典
字典以键值对形式存储数据,通过键快速查找值。键必须是不可变类型(字符串、数字、元组),值可以是任意类型。
python
# 创建字典
person = {
'name': '王大锤',
'age': 25,
'addr': '成都市武侯区'
}
# 用 dict() 或 zip() 创建
person2 = dict(name='张三', age=30)
items = dict(zip(['A', 'B', 'C'], [1, 2, 3]))
# 访问与修改
print(person['name']) # 王大锤
person['age'] = 26 # 修改
person['tel'] = '138...' # 新增键值对
# get() 方法:键不存在时返回默认值,不报错
print(person.get('sex')) # None
print(person.get('sex', '未知')) # 未知
▶ 运行结果:
输出
王大锤
None
未知
字典方法
| 方法 | 说明 |
|---|---|
keys() | 返回所有键 |
values() | 返回所有值 |
items() | 返回所有键值对(二元组) |
get(key, default) | 安全获取值,键不存在返回 default |
update(d) | 合并另一个字典 |
pop(key) | 删除键值对并返回值 |
popitem() | 删除并返回最后一个键值对 |
遍历字典
python
# 遍历键
for key in person:
print(key, person[key])
# 遍历键值对(推荐)
for key, value in person.items():
print(f'{key}: {value}')
实战:字母频率统计
python
sentence = input('请输入一段话:')
counter = {}
for ch in sentence:
if ch.isalpha():
counter[ch] = counter.get(ch, 0) + 1
# 按出现次数从高到低排序输出
for key in sorted(counter, key=counter.get, reverse=True):
print(f'{key} 出现了 {counter[key]} 次')
💡 get() 的妙用
counter.get(ch, 0) + 1 一行完成"如果键存在则加1,不存在则初始化为1"。比写 if ch in counter 判断更简洁。
实战:字典生成式筛选数据
python
stocks = {'AAPL': 191.88, 'GOOG': 1186.96, 'IBM': 149.24,
'ORCL': 48.44, 'ACN': 166.89, 'FB': 208.09}
# 筛选股价大于100的股票
expensive = {k: v for k, v in stocks.items() if v > 100}
print(expensive)
# {'AAPL': 191.88, 'GOOG': 1186.96, 'IBM': 149.24, 'ACN': 166.89, 'FB': 208.09}
▶ 运行结果:
输出
{'AAPL': 191.88, 'GOOG': 1186.96, 'IBM': 149.24, 'ACN': 166.89, 'FB': 208.09}