Python学习记录06-字典中的键映射多个值

2023-09-07 10:30:44 浏览数 (1)

本节的内容是Python中的字典,一个key映射多个value的内容。 Python的基础知识学习里,我们常用的字典是这样的。 都是一个key映射一个value

代码语言:javascript复制
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)

0 人点赞