Подтвердить что ты не робот

Добавление значений в словарь в 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

Позже я хочу иметь доступ к набору элементов entirr, например, 'MORPHINE'.

  • Как добавить число в drug_dictionary?
  • Как мне пройти через каждую запись?
4b9b3361

Ответ 1

Просто используйте 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']

Ответ 2

Вы должны использовать append для добавления в список. Но также здесь несколько подсказок кода:

Я бы использовал 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

Если вы не знаете, как работает группа, просто проверьте этот пример:

>>> list(key for key, val in itertools.groupby('aaabbccddeefaa'))
['a', 'b', 'c', 'd', 'e', 'f', 'a']

Ответ 3

Звучит так, как будто вы пытаетесь настроить список списков как каждое значение в словаре. Ваше начальное значение для каждого препарата в дикторе []. Предположим, что у вас есть список1, который вы хотите добавить в список для 'MORPHINE', который вы должны сделать:

drug_dictionary['MORPHINE'].append(list1)

Затем вы можете получить доступ к различным спискам таким образом, который вы хотите использовать как drug_dictionary['MORPHINE'][0] и т.д.

Чтобы перемещаться по спискам, хранящимся на клавише, вы должны:

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

Ответ 4

Чтобы добавить записи в таблицу:

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

Ответ 5

как добавить число в 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,'

Ответ 6

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)  

Ответ 7

Если вы хотите добавить к спискам каждого ключа внутри словаря, вы можете добавить к ним новые значения, используя оператор + (протестировано в 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]) будет выполнять ту же работу, что и +, без создания нового списка (эффективный способ).