Добавление значений к словарю в Python

Для отмены ребазинга, сделанного «некоторое время назад», более полной командой будет (с Git 2.12+) git rebase --quit .

Это избавит вас от каких-либо затяжных .git/ в вашем репо.

33
задан T Zengerink 2 June 2012 в 13:43
поделиться

6 ответов

Просто используйте 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']
60
ответ дан 27 November 2019 в 17:45
поделиться

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

0
ответ дан 27 November 2019 в 17:45
поделиться

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

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
3
ответ дан 27 November 2019 в 17:45
поделиться

как мне добавить число в 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,'
1
ответ дан 27 November 2019 в 17:45
поделиться

Вы должны использовать 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

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

>>> list(key for key, val in itertools.groupby('aaabbccddeefaa'))
['a', 'b', 'c', 'd', 'e', 'f', 'a']
16
ответ дан 27 November 2019 в 17:45
поделиться

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

drug_dictionary['MORPHINE'].append(list1)

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

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

for listx in drug_dictionary['MORPHINE'] :
  do stuff on listx
4
ответ дан 27 November 2019 в 17:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: