python 字典初始化方法 全!!!

python 中字典还是比较常用的,可惜自己一直记不住,好记性不如烂笔头这话说的一点没错

方法一:

(这个是比较常见的)

d1 = {x: 1, y: 2}
print(d1[x])

>>> 1

当然也有这种特别好理解,但是写起来不那么.......友好的

d1 = {}
d1[k1] = v1
d1[k2] = v2
.......

方法二:

d2 = dict(x = 1, y = 2)
print(d2[x])

>>> 1

方法三:

d3 = dict(zip(abc, [1,2,3])
print(d3[b])

>>> 2

方法四:(这种我没太用过,在书上偶然看到就先记下,后续有发现再补充)

d4 = dict.fromkeys(range(2), 3)
print(d4[1])

>>> 3

d4 = dict.fromkeys((x, y),)
print(d4[x])

>>> None

方法五:

list = [(a, 1), (b, 2), (c, 3)]
d5 = dict(list)
print(d5[a])

>>> 1

字典是一种关联容器,每个键都映射到一个单独的值上。如果想让键映射到多个值,需要将多个值保存到另一个容器如列表或集合中。例如:

m = {
   a : [1, 2, 3],
   b : [4, 5]
}

n = {
   a : {1, 2, 3},
   b : {4, 5}
}

至于要使用列表还是集合完全取决于使用的意图。如果希望保留元素插入的顺序,就用列表。如果希望消除重复元素(且不在意它们的顺序),就用集合。

为了能方便地创建这样的字典,可以利用collections模块中的defaultdict类。defaultdict的一个特点就是它会自动初始化第一个值,这样只需添加元素即可,例如:

from collections import defaultdict
#list
d = defaultdict(list)
d[a].append(1)
d[a].append(2)
d[b].append(4)
.......
#set
d = defaultdict(set)
d[a].add(1)
d[a].add(2)
d[b].add(4)
.......

原则上,构建一个一键多值字典是很容易的。但是如果试着自己对第一个值做初始化操作,这就会变得很杂乱。例如,可能会写下这样的代码:

d = {}
for key, value in pairs:
    if key not in d:
        d[key] = []
    d[key].append(value)

如果使用defaultdict的话,代码会简单一些:

d = defaultdict(list)
for key, value in pairs:
    d[key].append(value)

先写这么多,后续再补充~

经验分享 程序员 微信小程序 职场和发展