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