其他分享
首页 > 其他分享> > 字典中的键映射多个值

字典中的键映射多个值

作者:互联网

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)

 

标签:defaultdict,映射,多个,add,setdefault,key,print,append,字典
来源: https://www.cnblogs.com/zengjirong/p/16427332.html