多级字典 Python
我想从一个文件里创建一个多层次的字典,文件内容像这样:
node1 :
key1 : value1
node2 :
key2 : value2
key3 : value3
key4 : value4
node3 :
key2 :
interkey2 : value
node4 :
key2 :
interkey2 :
moreinterkey : value5
interkey3 :
moreinterkey : value5
我希望这个字典能保存在内存中,以便可以这样访问:
>>> variable["node1"]["key2"]["interkey2"]
value2
有没有什么好的方法?我现在是逐行读取文件,但我不太清楚怎么根据每个值的层级来设置字典的值。
谢谢,
因为我的问题似乎没有被理解,所以我编辑了一下,想更清楚地表达我想做的事情,但我不知道怎么让它更符合Python的风格:
result = {}
level_keys = []
for line in input_text:
actual_indent = len(line) - len(line.lstrip(' '))
splitted_string = line.split(':')
level_keys = level_keys[:actual_indent]
level_keys[actual_indent] = splitted_string[0]
if actual_indent == 0:
result[level_keys[0]] = splitted_string[1]
elif actual_indent == 1:
result[level_keys[0]][level_keys[1]] = splitted_string[1]
elif actual_indent == 2:
result[level_keys[0]][level_keys[1]][level_keys[2]] = splitted_string[1]
elif actual_indent == 3:
result[level_keys[0]][level_keys[1]][level_keys[2]][level_keys[3]] = splitted_string[1]
return result
希望现在我的问题更清楚了,抱歉之前的表达不够好。
1 个回答
1
与其使用自定义的文件格式,不如试试YAML文件格式,并使用一个大家都熟悉的解析库。比如,PyYAML文档首页上的例子看起来和你的很像。
第一个例子 - 设置:
import yaml
document = """
a: 1
b:
c: 3
d: 4
"""
print yaml.dump(yaml.load(document))
第一个例子 - 输出:
a: 1
b: {c: 3, d: 4}