在Python中向字典添加值
我有一个字典,想要给每种药物添加一组数字,像这样:
append(0), append(1234), append(123), etc.
def make_drug_dictionary(data):
drug_dictionary={'MORPHINE':[],
'OXYCODONE':[],
'OXYMORPHONE':[],
'METHADONE':[],
'BUPRENORPHINE':[],
'HYDROMORPHONE':[],
'CODEINE':[],
'HYDROCODONE':[]}
prev = None
for row in data:
if prev is None or prev==row[11]:
drug_dictionary.append[row[11][]
return drug_dictionary
之后,我想要能够访问,比如说,'MORPHINE'
这个药物的所有条目。
- 我该怎么往药物字典里添加一个数字呢?
- 我之后又该怎么遍历每一个条目呢?
8 个回答
6
你也可以使用 update()
这个方法。
d = {"a": 2}
d.update({"b": 4})
print(d) # {"a": 2, "b": 4}
21
你应该用append来往列表里添加内容。不过这里还有一些代码的小建议:
我建议使用 dict.setdefault
或者 defaultdict
,这样就不用在字典定义的时候指定空列表了。
如果你用 prev
来过滤掉重复的值,可以用 itertools
里的 groupby
来简化代码。你修改后的代码看起来是这样的:
import itertools
def make_drug_dictionary(data):
drug_dictionary = {}
for key, row in itertools.groupby(data, lambda x: x[11]):
drug_dictionary.setdefault(key,[]).append(row[?])
return drug_dictionary
如果你不知道groupby是怎么工作的,可以看看这个例子:
>>> list(key for key, val in itertools.groupby('aaabbccddeefaa'))
['a', 'b', 'c', 'd', 'e', 'f', 'a']
89
只需要用 append 就可以了:
list1 = [1, 2, 3, 4, 5]
list2 = [123, 234, 456]
d = {'a': [], 'b': []}
d['a'].append(list1)
d['a'].append(list2)
print d['a']