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