在Python中向字典添加值

56 投票
8 回答
476284 浏览
提问于 2025-04-16 02:23

我有一个字典,想要给每种药物添加一组数字,像这样:

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' 这个药物的所有条目。

  1. 我该怎么往药物字典里添加一个数字呢?
  2. 我之后又该怎么遍历每一个条目呢?

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']

撰写回答