我有一本词典,我想给每一种药加一本,一张号码表。如下所示:
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'中访问整个条目集。
如何将数字附加到drug_dictionary?
发布于 2010-08-05 21:15:13
只需使用附加:
list1 = [1, 2, 3, 4, 5]
list2 = [123, 234, 456]
d = {'a': [], 'b': []}
d['a'].append(list1)
d['a'].append(list2)
print d['a']发布于 2010-08-05 21:28:28
您应该使用追加添加到列表中。但是这里也有一些代码提示:
我将使用dict.setdefault或defaultdict来避免在字典定义中指定空列表。
如果您使用prev筛选出重复的值,您可以使用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如果您不知道groupby是如何工作的,只需检查下面的示例:
>>> list(key for key, val in itertools.groupby('aaabbccddeefaa'))
['a', 'b', 'c', 'd', 'e', 'f', 'a']发布于 2010-08-05 21:11:15
听起来,您似乎正在尝试将列表列表设置为字典中的每个值。你对每种药物的初始值是[]。因此,假设您有list1,您想要附加到'MORPHINE'的列表中,那么您应该这样做:
drug_dictionary['MORPHINE'].append(list1)然后,您可以以drug_dictionary['MORPHINE'][0]等的方式访问各种列表。
若要遍历存储在键上的列表,请执行以下操作:
for listx in drug_dictionary['MORPHINE'] :
do stuff on listxhttps://stackoverflow.com/questions/3419147
复制相似问题