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

本节的内容是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 的字典

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方法,如果用它就会报错。

test1["key1"].append('value7')
test1["key2"].add('value8')
print(test1)   #{'key1': ['value1', 'value', 'value3'], 'key2': {'value4', 'value5', 'value56'}}

写的时候有些许麻烦,我们可以使用collections里的defaultdict来快速简单的创建这样的字典。我们只关注添加元素即可,若果对应的key不存在,则会自动帮我们创建的

from collections import defaultdict

d = defaultdict(list)
d['a'].append(1)
d['a'].append(3)
d['a'].append(5)
print(d)  #defaultdict(<class 'list'>, {'a': [1, 3, 5]})

s = defaultdict(set)
s['b'].add(4)
s['b'].add(5)
s['b'].add(6)
print(s)  #defaultdict(<class 'set'>, {'b': {4, 5, 6}})

接下来我们来尝试实现一个多值映射的字典,可以使用

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,则会更简单

test1= {"a1":"s1","a2":"s2","a3":"s3"}
d = defaultdict(list)
for k,v in test1.items():
    d[k] = v
print(d)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇