我正在尝试从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'}}}}
谢谢!