在Python中将值附加到字典中

时间:2010-08-05 21:04:51

标签: 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

我后来希望能够访问entirr条目集,例如'MORPHINE'

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

8 个答案:

答案 0 :(得分:58)

只需使用追加:

list1 = [1, 2, 3, 4, 5]
list2 = [123, 234, 456]
d = {'a': [], 'b': []}
d['a'].append(list1)
d['a'].append(list2)
print d['a']

答案 1 :(得分:15)

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

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

如果您使用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']

答案 2 :(得分:3)

听起来好像是在尝试将列表列表设置为字典中的每个值。 dict中每种药物的初始值为[]。因此,假设您有要追加到'MORPHINE'列表的list1,您应该这样做:

drug_dictionary['MORPHINE'].append(list1)

然后,您可以按照drug_dictionary['MORPHINE'][0]等方式访问各种列表。

要遍历按密钥存储的列表,您可以执行以下操作:

for listx in drug_dictionary['MORPHINE'] :
  do stuff on listx

答案 3 :(得分:3)

要在表格中添加条目:

for row in data:
    name = ???     # figure out the name of the drug
    number = ???   # figure out the number you want to append
    drug_dictionary[name].append(number)

循环播放数据:

for name, numbers in drug_dictionary.items():
    print name, numbers

答案 4 :(得分:1)

我如何在drug_dictionary中附加一个数字?

您是否希望添加“数字”或一组值?

我使用字典来构建关联数组和查找表。

因为python非常善于处理字符串, 我经常使用字符串并将值作为逗号分隔的字符串

添加到dict中
drug_dictionary = {} 

drug_dictionary={'MORPHINE':'',
         'OXYCODONE':'',
         'OXYMORPHONE':'',
         'METHADONE':'',
         'BUPRENORPHINE':'',
         'HYDROMORPHONE':'',
         'CODEINE':'',
         'HYDROCODONE':''}


drug_to_update = 'MORPHINE'

try: 
   oldvalue = drug_dictionary[drug_to_update] 
except: 
   oldvalue = ''

# to increment a value

   try: 
      newval = int(oldval) 
      newval += 1
   except: 
      newval = 1 


   drug_dictionary[drug_to_update] = "%s" % newval

# to append a value  

   try: 
      newval = int(oldval) 
      newval += 1
   except: 
      newval = 1 


   drug_dictionary[drug_to_update] = "%s,%s" % (oldval,newval) 

Append方法允许存储值列表,但会留下一个尾随逗号

可以使用

删除
drug_dictionary[drug_to_update][:-1]

将值附加为字符串的结果意味着您可以根据需要附加值列表

print "'%s':'%s'" % ( drug_to_update, drug_dictionary[drug_to_update]) 

可以返回

'MORPHINE':'10,5,7,42,12,'

答案 5 :(得分:1)

vowels = ("a","e","i","o","u") #create a list of vowels  
my_str = ("this is my dog and a cat") # sample string to get the vowel count
count = {}.fromkeys(vowels,0) #create dict initializing the count to each vowel to 0                                                                    
for char in my_str :  
    if char in count:  
       count[char] += 1  

print(count)  

答案 6 :(得分:1)

如果要附加到字典中每个键的列表,则可以使用+运算符(在Python 3.7中测试)将新值附加到它们:

mydict = {'a':[], 'b':[]}
print(mydict)
mydict['a'] += [1,3]
mydict['b'] += [4,6]
print(mydict)
mydict['a'] += [2,8]
print(mydict)

和输出:

{'a': [], 'b': []}
{'a': [1, 3], 'b': [4, 6]}
{'a': [1, 3, 2, 8], 'b': [4, 6]}

mydict['a'].extend([1,3])将执行与+相同的工作,而无需创建新列表(有效方式)。

答案 7 :(得分:0)

您也可以使用 update() 方法

d = {"a": 2}
d.update{"b": 4}
print(d) # {"a": 2, "b": 4}