我想从这样的文件创建一个多级字典:
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
任何想法哪个是最好的方法?我逐行迭代,但我真的不知道如何根据每个值的级别设置dict值
谢谢,
似乎我的问题不是很明白,我编辑了我想要做的事情,但我不知道如何让它变得更加pythonic:
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
我希望现在更清楚我的问题,对不起第一次尝试
答案 0 :(得分:1)
您可以使用YAML文件格式并使用众所周知的解析库,而不是使用自定义文件格式。例如,PyYAML Documentation的着陆页中的示例与您的相似。
第一个例子 - 设置:
import yaml
document = """
a: 1
b:
c: 3
d: 4
"""
print yaml.dump(yaml.load(document))
第一个例子 - 输出:
a: 1
b: {c: 3, d: 4}