多级字典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这正是我想做的,我正在计算缩进级别,我知道如何保存最后添加的键,但是如何添加新的对/键如果我只知道运行时的级别,我不知道如何在运行时设置赋值的深度…我不能更改文件格式,真的不是文件,是我想要输入和使用的控制台输出程序