02_字典

字典/哈希表

d = {}
# 创建
person = {"name": "Alice", "age": 25}
# 访问
person["name"] # 'Alice'
d.get(key, default)    # 获取值,不存在返回 default

# 直接赋值(key 存在则修改,不存在则添加)
d[key] = value
# 增量赋值
d[key] = d.get(key, 0) + value

del d[key]   # 删除指定键(不存在时抛异常)
clear()   # 清空字典

# 检查键是否存在
if key in d: ...

# 计数器:统计字符出现次数
from collections import Counter
cnt = Counter(arr)
cnt.values()           # 获取所有出现次数的值(dict_values 类型)
min(cnt.values())      # 获取最小出现次数
max(cnt.values())      # 获取最大出现次数

# keys():返回所有键的视图(可迭代)
# values():返回所有值的视图
# items():返回所有 (键, 值) 对的视图
for k in d.keys(): ...
for v in d.values(): ...
for k, v in d.items(): ...
  • 按键排序sorted(d.items())

  • 按值排序sorted(d.items(), key=lambda x: x[1])

  • 获取值最小的键min(d, key=d.get)

defaultdict

from collections import defaultdict

# int 默认值:计数
d = defaultdict(int)
d["a"] += 1  # 不需要先判断键是否存在

# list 默认值:分组
d = defaultdict(list)
d["a"].append(1)  # 自动创建空列表

# 常用场景
# 1. 计数
s = "abracadabra"
cnt = defaultdict(int)
for char in s:
    cnt[char] += 1   # 不需要先判断键是否存在
# {'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1}

# 2. 分组
words = ["apple", "banana", "apricot"]
group = defaultdict(list)
for w in words:
    group[w[0]].append(w)
# {'a': ['apple', 'apricot'], 'b': ['banana']}

02_字典
https://mingsm17518.github.io/2026/09/14/算法学习/01_数据结构/02_字典/
作者
Ming
发布于
2026年9月14日
许可协议