代码语言:javascript复制本节的内容是Python中的字典,一个key映射多个value的内容。 Python的基础知识学习里,我们常用的字典是这样的。 都是一个key映射一个value
dict1 = {"hello":"world","nihao":"shijie"}
print(dict1)
print(dict1["hello"]) #world
print(dict1["nihao"]) #shijie
如果想一个key映射多个value, 我们就需要让value也是一个容器,可以是列表,也可以集合。看具体的使用场景。列表的特性是可以保持顺序,集合的特性是可以去重。 可以用以下的方式来创建一个映射多个value 的字典
代码语言:javascript复制test1 = {
"key1":['value1','value','value3'],
"key2":{"value4",'value5','value56'}
}
print(test1) #{'key1': ['value1', 'value', 'value3'], 'key2': {'value4', 'value5', 'value56'}}
如果想添加元素,则可以使用。append和add 。注意是列表用append,set用add。set没有append方法,如果用它就会报错。
代码语言:javascript复制test1["key1"].append('value7')
test1["key2"].add('value8')
print(test1) #{'key1': ['value1', 'value', 'value3'], 'key2': {'value4', 'value5', 'value56'}}
写的时候有些许麻烦,我们可以使用collections里的defaultdict来快速简单的创建这样的字典。我们只关注添加元素即可,若果对应的key不存在,则会自动帮我们创建的
代码语言:javascript复制from collections import defaultdict
d = defaultdict(list)
d['a'].append(1)
d['a'].append(3)
d['a'].append(5)
print(d) #defaultdict(, {'a': [1, 3, 5]})
s = defaultdict(set)
s['b'].add(4)
s['b'].add(5)
s['b'].add(6)
print(s) #defaultdict(, {'b': {4, 5, 6}})
接下来我们来尝试实现一个多值映射的字典,可以使用
代码语言:javascript复制test1= {"a1":"s1","a2":"s2","a3":"s3"}
d = {}
for key,value in test1.items():
if key not in d :
d[key]=[]
d[key].append(value)
print(d)
如果使用defaultdict,则会更简单
代码语言:javascript复制test1= {"a1":"s1","a2":"s2","a3":"s3"}
d = defaultdict(list)
for k,v in test1.items():
d[k] = v
print(d)