对于“健康检查”项目,我正在尝试根据写入文本文件的字符串创建多维数组。
目前,我可以使用这样的单个变量:
someParameter1 = someValue1 # With some comments
someParameter2 = someValue2 # With some other comments
这将被翻译成字典:
ini['someParameter1'] = 'someValue1'
ini['someParameter2'] = 'someValue2'
现在,我刚刚添加了对表的检查,因此,我使用二维数组,它是通过像这样的破折号分隔的字符串构建的:
someTable-someParameter1 = someValue1 # With some comments someTable-someParameter2 = someValue2 # With some other comments
这将翻译成两级字典:
ini['someTable']['someParameter1'] = 'someValue1' ini['someTable']['someParameter2'] = 'someValue2'
为此,我在'='号之前硬编码了两个字段的限制:
# In case the key contains a dash, create a 2-dimensional key for inikey in list(ini): # loop thru the ini to find key's with a dash if '-' in inikey: part1,part2 = inikey.split('-',1) # <= Only split on the first dash try: ini[part1][part2] = ini[inikey] except KeyError: # In case ini[part1] does not exist yet ini[part1] = {} ini[part1][part2] = ini[inikey]
因此,当我在配置文件中有
aaa-bbb-ccc-ddd = xyz
时,它将转换为ini['aaa']['bbb-ccc-ddd'] = 'xyz'
现在我正在寻找nice
技巧来创建ini['aaa']['bbb]['ccc']['ddd'] = 'xyz'
,而无需为每个预期的级别编写代码。因此,如果可能的话,还可以使用3、4或=之前的任意数量的单词,创建一个列表,该列表的维数未知,并且需要的深度。对于“健康检查”项目,我正在尝试根据写入文本文件的字符串创建多维数组。目前,我可以使用这样的单个变量:someParameter1 = ...
您可以使用默认字典,并使用默认字典创建它。如果您将其称为Tree
,则我们具有递归数据结构: