我有這個多維字典:的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