Python Cookbook(数据结构与算法)中在字典中将键映射到多个值上的方法可以使用Python中的defaultdict
和普通的dict
嵌套列表的方式实现。
使用defaultdict
默认字典(defaultdict
)可以实现对键的自动构建,每个键会被映射到一个空列表上。当然,增加元素时会自动加入到该键对应的列表。
示例:
from collections import defaultdict
# 使用defaultdict来实现字典中将键映射到多个值上
d = defaultdict(list)
d['a'].append(1)
d['a'].append(2)
d['b'].append(4)
# defaultdict可以自动构建对应键的值
# 如果直接使用普通字典做嵌套,则需要手动构建列表
print(d) # defaultdict(<class 'list'>, {'a': [1, 2], 'b': [4]})
使用普通字典嵌套列表
普通的字典可以通过嵌套一个列表来实现在字典中将键映射到多个值上的需求。通过判断键是否存在,如果不存在则构建一个新的空列表,然后将值加入到该列表中。
示例:
# 使用普通字典并嵌套列表来实现字典中将键映射到多个值上
d = {}
if 'a' not in d:
d['a'] = []
d['a'].append(1)
if 'a' not in d:
d['a'] = []
d['a'].append(2)
if 'b' not in d:
d['b'] = []
d['b'].append(4)
print(d) # {'a': [1, 2], 'b': [4]}
综上,使用defaultdict
和普通的dict
嵌套列表都可以实现字典中将键映射到多个值上的需求。如果希望代码简洁,建议使用defaultdict
。如果希望节省一些空间,可以选择使用普通的dict
嵌套列表。