我正在尝试创建一个数据结构来跟踪多年来每月发生的事件。我已确定列表字典是最佳选择。我想创建类似这样的结构(年份:代表每月出现次数的十二个整数的列表):
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.
}
我让我的代码循环通过第二个字典,首先注意键(年份)中的前 4 个字符,如果字典中没有,那么我初始化该键以及列表中十二个空白月的值形式:[0,0,0,0,0,0,0,0,0,0,0,0],然后将该月份位置列表中的项目的值更改为任何值。如果年份在字典中,那么我只想将列表中的项目设置为等于该月的值。我的问题是如何访问和设置字典中列表中的特定项目。我遇到了一些对谷歌没有特别帮助的错误。
这是我的代码:
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
让我知道我是否可以澄清任何事情。谢谢你的关注。