在Python中向字典追加值

2020-12-04 15:41:25 发布

您现在位置: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'中的entirr项集。

  1. 如何在药典中添加数字?
  2. 以后如何遍历每个条目?
3条回答
网友
1楼 ·

听起来好像你在试图将一个列表列表设置为字典中的每个值。dict中每种药物的初始值是[]。因此,假设您有想要附加到'MORPHINE'列表的list1,您应该执行以下操作:

drug_dictionary['MORPHINE'].append(list1)

然后,您可以按所需的方式访问各种列表,如drug_dictionary['MORPHINE'][0]

要遍历存储在键上的列表,请执行以下操作:

for listx in drug_dictionary['MORPHINE'] :
  do stuff on listx
网友
2楼 ·

您应该使用append添加到列表中。但这里也有一些代码提示:

我将使用dict.setdefaultdefaultdict来避免在字典定义中指定空列表。

如果使用prev过滤掉重复的值,则可以使用groupbyfromitertools简化代码 修改后的代码如下:

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']
网友
3楼 ·

只需使用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']

相关问题