2012-11-30 48 views
1

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

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

如何创建这样的多词典:

dict=[key1][key2][key3][key4]='value' 

其中key1是第一线的第一个元素,key2第二等

+1

是一样的深度的“多维字典”始终? –

+1

而'k = line.strip.split('。')'不能是你跑的代码;) –

+0

谢谢你的回答。但是,这是有效的,为什么不呢? – user1841492

回答

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 

这不处理keys duplicat一切都好;如果您有重复键你需要使用稍微更麻烦的设置(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] 
+0

非常感谢。 – user1841492