大马强 发表于 2022-1-17 09:39:12

cookbook 1.6


在字典中将键映射到多个值上
问题描述:
        想搞一个一键多值的字典

借助collections库
一、defaultdict
a = defaultdict(list)
b = defaultdict(set)
c = defaultdict(dict)
# 都是字典

a["a"].append(1)
b["b"].add(2)
c["c"].setdefault(3)
print(a)
print(b)
print(c)
defaultdict(<class 'list'>, {'a': })
defaultdict(<class 'set'>, {'b': {2}})
defaultdict(<class 'dict'>, {'c': {3: None}})


二、普通的字典
d = {}
d.setdefault("a", []).append(4)
d.setdefault("a", []).append(5)
print(d)

{'a': }

三、区别
defaultdict()方法不用对第一个值进行初始化
而普通的字典需要
d = {}
pairs = ()
for key, value in pairs:
    if key not in d:
      d = []
    d.append(value)

d = defaultdict(list)
for key, value in pairs:
    d.append(value)
页: [1]
查看完整版本: cookbook 1.6