Я пытаюсь заполнить вложенный словарь из 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'}}}}
Спасибо тебе!