将Perl中的多维哈希转换为Python字典

时间:2019-06-11 17:29:43

标签: python python-3.x perl dictionary

我在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字典的方法吗?这可笑吗?我还可以使用其他什么数据类型?

感谢您的帮助!

1 个答案:

答案 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
        })
    }
})