我在Perl中有一个要转换为Python的程序。现在的重点是死记硬背的翻译,然后我将继续讲它,使其更具Python风格(有很多文件和几个人在做它,所以我也不想通过更改代码来弄乱逻辑流程许多)。
Perl代码创建一个哈希InputData,它填充了来自输入文件的数据。起初它是一维的,所以我只用了字典。然后,代码增加了第二个维度,看了this thread之后,我使用了defaultdict(dict)
。现在,我的Perl代码中添加了第三个维度,并期待在代码中也使用第四个维度。
我已经在Jupyter Notebook中测试了字典,当我尝试添加第三维时,出现了KeyError。
my_dict = defaultdict(dict)
my_dict['Status'] = 'free'
my_dict['Results']['Test1'] = 1
my_dict['Variables']['Coords']['X'] = 2
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-19-dbbf5ada990b> in <module>
2 my_dict['Status'] = 'free'
3 my_dict['Results']['Test1'] = 1
----> 4 my_dict['Variables']['Coords']['X'] = 2
KeyError: 'Coords'
还有其他创建多维Python字典的方法吗?这可笑吗?我还可以使用其他什么数据类型?
感谢您的帮助!
答案 0 :(得分:0)
如果您想这样使用my_dict['Variables']['Coords']
,也需要将defaultdict(dict)
定义为字典,
#Define as default dict
my_dict['Variables']['Coords'] = defaultdict(dict)
my_dict['Variables']['Coords']['X'] = 2
print(my_dict)
输出将为
defaultdict( <class 'dict'> , {
'Status': 'free',
'Results': {
'Test1': 1
},
'Variables': {
'Coords': defaultdict( <class 'dict'> , {
'X': 2
})
}
})