Ответ 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']
У меня есть словарь, к которому я хочу добавить каждый препарат, список номеров. Вот так:
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'
.
Просто используйте 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']
Вы должны использовать 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']
Звучит так, как будто вы пытаетесь настроить список списков как каждое значение в словаре. Ваше начальное значение для каждого препарата в дикторе []
. Предположим, что у вас есть список1, который вы хотите добавить в список для 'MORPHINE'
, который вы должны сделать:
drug_dictionary['MORPHINE'].append(list1)
Затем вы можете получить доступ к различным спискам таким образом, который вы хотите использовать как drug_dictionary['MORPHINE'][0]
и т.д.
Чтобы перемещаться по спискам, хранящимся на клавише, вы должны:
for listx in drug_dictionary['MORPHINE'] :
do stuff on listx
Чтобы добавить записи в таблицу:
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
как добавить число в 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,'
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)
Если вы хотите добавить к спискам каждого ключа внутри словаря, вы можете добавить к ним новые значения, используя оператор +
(протестировано в 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])
будет выполнять ту же работу, что и +
, без создания нового списка (эффективный способ).