l--*_*''' 33 python dictionary
我有一本字典,我想附加到每种药物,一个数字列表.像这样:
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
Run Code Online (Sandbox Code Playgroud)
我后来希望能够访问例如的entirr条目集'MORPHINE'.
Ton*_*nen 60
只需使用追加:
list1 = [1, 2, 3, 4, 5]
list2 = [123, 234, 456]
d = {'a': [], 'b': []}
d['a'].append(list1)
d['a'].append(list2)
print d['a']
Run Code Online (Sandbox Code Playgroud)
Pio*_*pla 16
您应该使用append添加到列表中.但这里也是一些代码提示:
我会使用dict.setdefault或defaultdict避免在字典定义中指定空列表.
如果您使用prev来过滤掉重复的值,您可以使用simplfy代码groupby从itertools
你的代码的修改如下所示:
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
Run Code Online (Sandbox Code Playgroud)
如果您不知道groupby的工作原理,请查看以下示例:
>>> list(key for key, val in itertools.groupby('aaabbccddeefaa'))
['a', 'b', 'c', 'd', 'e', 'f', 'a']
Run Code Online (Sandbox Code Playgroud)
update()您也可以使用该方法
d = {"a": 2}
d.update({"b": 4})
print(d) # {"a": 2, "b": 4}
Run Code Online (Sandbox Code Playgroud)
听起来好像您正在尝试将列表列表设置为字典中的每个值。dict 中每种药物的初始值为[]. 因此,假设您有要附加到列表中的 list1,'MORPHINE'您应该这样做:
drug_dictionary['MORPHINE'].append(list1)
Run Code Online (Sandbox Code Playgroud)
然后,您可以按照您想要的方式访问各种列表drug_dictionary['MORPHINE'][0]等。
要遍历针对键存储的列表,您可以执行以下操作:
for listx in drug_dictionary['MORPHINE'] :
do stuff on listx
Run Code Online (Sandbox Code Playgroud)