我有这个多维字典:的Python - Unflatten字典
a = {'a' : 'b', 'c' : {'d' : 'e'}}
和书写简单的功能扁平化是字典:
def __flatten(self, dictionary, level = []):
tmp_dict = {}
for key, val in dictionary.items():
if type(val) == dict:
tmp_dict.update(self.__flatten(val, level + [key]))
else:
tmp_dict['.'.join(level + [key])] = val
return tmp_dict
通话用字典a
这个功能我在结果得到后:
{'a' : 'b', 'c.d' : 'e'}
现在,在对这个扁平的字典作出几个指示后,我需要建立新的,从这个扁平的多维词典。例如:
>> unflatten({'a' : 0, 'c.d' : 1))
{'a' : 0, 'c' : {'d' : 1}}
我唯一的问题是我不具备的功能unflatten
:)
任何人都可以在这方面帮助?我不知道该怎么做。
编辑:
又如:
{'a' : 'b', 'c.d.e.f.g.h.i.j.k.l.m.n.o.p.r.s.t.u.w' : 'z'}
后应unflatten:
{'a': 'b', 'c': {'d': {'e': {'f': {'g': {'h': {'i': {'j': {'k': {'l': {'m': {'n': {'o': {'p': {'r': {'s': {'t': {'u': {'w': 'z'}}}}}}}}}}}}}}}}}}}
而另:
{'a' : 'b', 'c.d' : 'z', 'c.e' : 1}
要:
{'a' : 'b', 'c' : {'d' : 'z', 'e' : 1}}
这大大增加了工作的难度,我知道。这就是为什么我有这个问题,并发现小时无解..
我真的不能明白为什么' 'C':{ 'd': 'E'}''变成 'CD': 'e'',如果你有'' C ':{'f':'g','d':'e'}' – neurino 2011-05-17 22:00:49
Then'{'c':{'f':'g','d':'e'}}'' 'cf':'g','cd':'e'}':) – Galmi 2011-05-17 22:12:39