【问题标题】:Translating multidimensional hash in Perl to Python dict [duplicate]将 Perl 中的多维哈希转换为 Python dict [重复]
【发布时间】:2019-06-11 17:29:43
【问题描述】:

我有一个要翻译成 Python 的 Perl 程序。现在的重点是死记硬背,然后我将通过它使其更加 Pythonic(有很多文件和几个人在处理它,所以我不想通过更改代码来搞乱逻辑流程很多)。 Perl 代码创建一个散列 InputData,用来自输入文件的数据填充该散列。起初它是一维的,所以我只使用了字典。然后代码增加了第二个维度,看了this thread之后我用了defaultdict(dict)。现在我的 Perl 代码添加了第三个维度,期待在代码中也使用了第四个维度。

我一直在 Jupyter Notebook 中测试 dicts,当我尝试添加第三个维度时,我得到了这个 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 字典吗?这很荒谬吗?我还可以改用什么其他数据类型?

感谢您的帮助!

【问题讨论】:

  • 这是 Python 2 还是 3?
  • 3,抱歉应该包括那个

标签: python python-3.x perl dictionary


【解决方案1】:

您还需要将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
        })
    }
})

【讨论】:

    猜你喜欢
    • 2015-01-21
    • 2020-04-27
    • 2019-07-14
    • 2012-11-11
    • 2021-07-13
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多