在Python中将值附加到字典中

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

  1. 如何在drug_dictionary中添加数字?
  2. 我以后如何遍历每个条目?

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)

  • 只是补充一下,这是上面的输出:```[[[1, 2, 3, 4, 5], [123, 234, 456]]``` 这是之后完整列表的样子. ```{'a': [[1, 2, 3, 4, 5], [123, 234, 456]], 'b': []} ``` (3认同)

Pio*_*pla 16

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

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

如果您使用prev来过滤掉重复的值,您可以使用simplfy代码groupbyitertools 你的代码的修改如下所示:

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)


Abh*_*k S 6

update()您也可以使用该方法

d = {"a": 2}
d.update({"b": 4})
print(d) # {"a": 2, "b": 4}
Run Code Online (Sandbox Code Playgroud)

  • 恕我直言,正确的形式是“d.update({“b”: 4})”。 (2认同)

And*_*rew 5

听起来好像您正在尝试将列表列表设置为字典中的每个值。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)