給定一個(gè)“扁平”字典對(duì)象,其鍵是點(diǎn)分隔的稳诚。例如哗脖,{'a':1,'b.a':2扳还,'b.b':3才避,'cc.d.e':4,'cc.d.f':5}氨距。用任何語(yǔ)言實(shí)現(xiàn)一個(gè)函數(shù)桑逝,將其轉(zhuǎn)換為“嵌套的”字典對(duì)象。在上述情況下俏让,嵌套版本如下:
{
? ‘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)