Я пытаюсь создать структуру данных, которая отслеживает события в месяц в течение нескольких лет. Я определил словарь списков как лучший вариант. Я хочу создать что-то вроде этой структуры (года: список из двенадцати целых чисел, представляющих вхождение в месяц):Доступ к элементам списка в словаре списков
yeardict = {
'2007':[0,1,2,0,3,4,1,3,4,0,6,3]
'2008':[0,1,2,0,3,4,1,3,5,0,6,3]
'2010':[7,1,3,0,2,6,0,6,1,8,1,4]
}
я принимаю в качестве входных данных, словарь, который выглядит следующим образом:
monthdict = {
'2007-03':4,
'2007-05':2,
'2008-02':8
etc.
}
I попросите мой цикл кода во втором словаре, сначала обратив внимание на первые 4 символа в ключе (год), и если это НЕ в словаре, я инициализирую этот ключ вместе со значением двенадцати пробелов в форме списка : [0,0,0,0,0,0,0,0,0,0,0,0,0], затем измените значение элемента в этом списке позиции месяца на любое значение. Если год в словаре, я просто хочу, чтобы элемент в списке был равен значению этого месяца. Мой вопрос в том, как мне получить доступ и установить конкретный элемент в списке в словаре. Я сталкиваюсь с рядом ошибок, которые не особенно полезны для Google.
вот мой код:
yeardict = {}
for key in sorted(monthdict):
dyear = str(key)[0:4]
dmonth = str(key)[5:]
output += "year: "+dyear+" month: "+dmonth
if dyear in yeardict:
pass
# yeardict[str(key)[0:4]][str(key)[5:]]=monthdict(key)
else:
yeardict[str(key)[0:4]]=[0,0,0,0,0,0,0,0,0,0,0,0]
# yeardict[int(dyear)][int(dmonth)]=monthdict(key)
два линий, которые закомментированные находятся там, где я хочу на самом деле установить значение, и они представляют одну из двух ошибок, когда я добавляю их в мой код: 1 . 'dict' не подлежит действию 2. KeyError: 2009
Сообщите мне, если я смогу прояснить ситуацию. Спасибо, что посмотрели.
'monthdict (ключ)' должен быть 'monthdict [ключ]' –
Что такое 'tabhash' в вашем коде, вы имеете в виду' yeardict'? –
@ F.J да, извините, я изменил имя переменной, чтобы сделать все более ясным и забыл изменить его повсюду. –