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)
先写这么多,后续再补充~
