从循环填充多层嵌套字典

时间:2020-04-16 15:02:15

标签: python dictionary

我正在尝试从csv文件填充嵌套字典,它可以工作,但是我的处理方式对我来说似乎很脏。 如果有人知道更好的方法,请告诉我。

这是我的不含csv文件部分的代码:

import pprint

my_keys = ['keys1','keys2']
data = ['lvl1_a;lbl2_a;lvl3_a;xxx;xxx', 'lvl1_a;lbl2_a;lvl3_b;xxxx;xxx', 'lvl1_a;lbl2_b;lbl2_a;xxx;xxxx'] 

_dict = {}

def get_dictionary(dico, keys, r):
    d = dico
    for k in keys:
        x = d.get(k)
        if x is not None:
            d = d[k]                        
        else:
            return d,x
        if k == r:
            return d,x

for d in data:
    r_keys = d.split(";")[:-2]
    r_values = d.split(";")[-2:]

    for k in r_keys:
        d,x = get_dictionary(_dict, r_keys, k)
        if x is None:
            d.update({k:{}})

    d = d[r_keys[-1]]

    for j,y in enumerate(my_keys):
        d[y] = r_values[j]

pprint.pprint(_dict)  

结果:

{'lvl1_a': {'lbl2_a': {'lvl3_a': {'keys1': 'xxx', 'keys2': 'xxx'},
                       'lvl3_b': {'keys1': 'xxxx', 'keys2': 'xxx'}},
            'lbl2_b': {'lbl2_a': {'keys1': 'xxx', 'keys2': 'xxxx'}}}}

谢谢!

0 个答案:

没有答案