字典中的键映射多个值
1. 一个键对应多个值,就要把值放在另外的容器之中,比如列表或集合之中
d = { 'a' : [1,2,3], 'b' : [4,5] } print(d) ##'a': [1, 2, 3], 'b': [4, 5]}
注意:
- 如果你想保持元素插入顺序,就用列表
- 如果你想去掉重复元素,就用集合
2. collections模块defaultdict函数
- defaultdict可以自动初始化每一个key刚开始对应的值,只用关注添加元素的操作。
from collections import defaultdict d = defaultdict(list)#值为列表用list,添加元素append() d['a'].append(1) d['b'].append(2) d['a'].append(3) d['a'].append(3) print(d) #defaultdict(list, {'a': [1, 3, 3], 'b': [2]})
d = defaultdict(set)#值为集合用set,添加元素add() d['a'].add(1) d['b'].add(2) d['a'].add(3) d['a'].add(3) print(d) #defaultdict(set, {'a': {1, 3}, 'b': {2}})
defaultdict 会自动为将要访问的键(就算目前字典中并不存在这样的键)创建映射实体
- 不需要这样的特性的话 你可以在一个普通的字典上使用 setdefault() 方法来代替
d = {} d.setdefault('a', []).append(1) d.setdefault('a', []).append(2) d.setdefault('b', []).append(4) print(d) #{'a': [1, 2], 'b': [4]}
- 自己创建一个多值映射的字典
d = {} for key,value in d: if key not in d: d[key]=[] d[key].append(value)
- 但是用defaultdict的话代码就比较简单了
d = defaultdict(list) for key,value in d: d[key].append(value)
微笑向暖安之若素,你若盛开清风自来
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?