给定一个“扁平”字典对象,其键是点分隔的。例如,{'a':1,'b.a':2,'b.b':3,'cc.d.e':4,'cc.d.f':5}。用任何语言实现一个函数,将其转换为“嵌套的”字典对象。在上述情况下,嵌套版本如下:
{
‘A’: 1,
‘B’: {
‘A’: 2,
‘B’: 3,
},
‘CC’: {
‘D’: {
‘E’: 4,
‘F’: 5,
}
}
}
它保证字典中没有任何键是其他键的前缀。
dict1 = {'a': 1, 'b.a': 2, 'b.b': 3, 'cc.d.e': 4, 'cc.d.f': 5}
def func(dic):
result = dict()
for key, value in dic.items():
keys = str(key).upper().split('.')
test = 'result'
li = [r"['%s']" % e_key for e_key in keys]
last = li.pop()
for i in li:
test += i
try:
eval(test)
except KeyError:
exec(test + '= dict()')
test += last
test += r'= %d' % value
exec(test)
return result
func(dict1)