给定一个“扁平”字典对象,其键是点分隔的。例如,{'a':1,'b.a':2,'b.b':3,'cc.d.e':4,'cc.d.f':5}。用任何语言实现一个函数,将其转换为“嵌套的”字典对象。

给定一个“扁平”字典对象,其键是点分隔的。例如,{'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)

你可能感兴趣的:(给定一个“扁平”字典对象,其键是点分隔的。例如,{'a':1,'b.a':2,'b.b':3,'cc.d.e':4,'cc.d.f':5}。用任何语言实现一个函数,将其转换为“嵌套的”字典对象。)