items / keys / values
d = {"name": "WadeLy", "age": 30, "city": "深圳"}
list(d.keys()) # ['name', 'age', 'city']
list(d.values()) # ['WadeLy', 30, '深圳']
list(d.items()) # [('name', 'WadeLy'), ('age', 30), ('city', '深圳')]
items() 返回的是键值对元组——遍历最常用:
for k, v in d.items():
print(f"{k} = {v}")
合并字典
a = {"x": 1, "y": 2}
b = {"y": 20, "z": 30}
# Python 3.9+ 直接用 |
merged = a | b # {'x': 1, 'y': 20, 'z': 30}(b 覆盖 a)
# 兼容老版本
merged = {**a, **b} # 同上
a.update(b) # 原地更新 a
嵌套字典:表达 JSON 数据
user = {
"name": "WadeLy",
"profile": {
"age": 30,
"city": "深圳",
"skills": ["Python", "Unity"]
},
"active": True
}
print(user["profile"]["city"]) # 深圳
print(user["profile"]["skills"][0]) # Python
这就是 JSON 在 Python 里的样子。
setdefault:键不存在就插入
counts = {}
words = ["a", "b", "a", "c", "b", "a"]
for w in words:
counts.setdefault(w, 0)
counts[w] += 1
print(counts) # {'a': 3, 'b': 2, 'c': 1}
更优雅的写法用 collections.Counter:
from collections import Counter
counts = Counter(words) # 一行搞定
defaultdict:自动创建默认值
from collections import defaultdict
groups = defaultdict(list)
data = [("水果", "苹果"), ("水果", "橘子"), ("蔬菜", "白菜")]
for cat, item in data:
groups[cat].append(item)
print(dict(groups))
# {'水果': ['苹果', '橘子'], '蔬菜': ['白菜']}
字典推导式
squares = {x: x**2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# 反转键值
d = {"a": 1, "b": 2}
inv = {v: k for k, v in d.items()} # {1: 'a', 2: 'b'}
下一篇讲集合 Set——专治去重和成员检查。