创建多维字典

use*_*492 1 python dictionary

我尝试从文件创建一个多字典;

k = []
with open('directory file txt',r) as f:
    for line in f:
        k.append(line.strip().split('.'))
Run Code Online (Sandbox Code Playgroud)

如何创建这样的多字典:

dict=[key1][key2][key3][key4]='value'
Run Code Online (Sandbox Code Playgroud)

哪一个key1是第一行的第一个元素,key2第二个是等等.

Mar*_*ers 6

反转列表并嵌套结果:

result = {}
with open('directory file txt',r) as f:
    for line in f:
        keys = line.strip().split('.')
        value = keys[-1]
        for key in reversed(keys[1:-1]):
            value = {key: value}
        result[keys[0]] = value
Run Code Online (Sandbox Code Playgroud)

这并不能解决那些重复"更高"的密钥; 如果你有重复的键,你需要使用稍微麻烦的设置(defaultdict()不会处理这种情况,我不认为):

result = {}
with open('directory file txt',r) as f:
    for line in f:
        keys = line.strip().split('.')
        current = result
        for key in keys[:-2]:
            current = current.setdefault(key, {})
        current[keys[-2]] = keys[-1]
Run Code Online (Sandbox Code Playgroud)