多级字典python
我想从如下文件创建一个多级词典:多级字典python,python,dictionary,Python,Dictionary,我想从如下文件创建一个多级词典: node1 : key1 : value1 node2 : key2 : value2 key3 : value3 key4 : value4 node3 : key2 : in
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值
谢谢
似乎我的问题不是很明白,我编辑了我想做的事情,但我不知道如何让它更像蟒蛇:
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
我希望现在我的问题更清楚了,很抱歉第一次尝试使用自定义文件格式,您是否可以使用YAML文件格式并使用著名的解析库。例如,的登录页中的示例与您的非常相似 第一个示例-设置:
import yaml
document = """
a: 1
b:
c: 3
d: 4
"""
print yaml.dump(yaml.load(document))
第一个示例-输出:
a: 1
b: {c: 3, d: 4}
您的数据输入是什么样子的?您在创建字典或访问字典时遇到问题吗?您似乎已经对如何存储它有了很好的想法,只需使用一个键/值对,该值本身就是一个dict。不同的级别是否由进行中的空格数标记?您只需计算缩进级别,并记住最后添加的键。@iChar级别是可变的,那么我想有一个可以有对键/值的字典,这些键中的任何键都可以是(或不是)有对键/值的字典,这些键中的任何键都可以是(或不是)字典。。。我可以将级别限制为4级或更高5@fodma1这正是我想做的,我正在计算缩进级别,我知道如何保存最后添加的键,但是如何添加新的对/键如果我只知道运行时的级别,我不知道如何在运行时设置赋值的深度…我不能更改文件格式,真的不是文件,是我想要输入和使用的控制台输出程序