多级字典python

时间:2014-09-08 16:30:09

标签: python dictionary

我想从这样的文件创建一个多级字典:

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

我希望现在更清楚我的问题,对不起第一次尝试

1 个答案:

答案 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}
相关问题