将列表转换为嵌套字典

Arb*_*ong 5 python dictionary list

比如我有

x = ['a','b','c']
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为:

y['a']['b']['c'] = ''
Run Code Online (Sandbox Code Playgroud)

那可能吗?

对于后台,我有一个配置文件,其中包含指向某些json数据中某个位置的点符号.我想使用带点的符号字符串来访问json文件中的特定数据.例如,在配置中:

path_to_data = "user.name.first_name"
Run Code Online (Sandbox Code Playgroud)

我希望我的脚本能够认识到:

json_data["user"]["name"]["first_name"]
Run Code Online (Sandbox Code Playgroud)

所以我可以得到first_name字段的值.我将原始字符串转换为列表,现在我不知道如何将其转换为嵌套字典.

编辑:我需要应用dict的现有数据结构.让我们说:

m = {'a': {'b': {'c': 'lolcat'}}}
Run Code Online (Sandbox Code Playgroud)

以便

m['a']['b']['c']
Run Code Online (Sandbox Code Playgroud)

给了我'lolcat'.如果我得到了正确的字典结构(正如一些回复所做的那样),我仍然需要将它应用于现有字典'm'.

所以,再次,我从配置文件中得到这个:

c = 'a.b.c'
Run Code Online (Sandbox Code Playgroud)

我转换成一个列表,认为这将使事情变得更容易:

x = ['a','b','c']
Run Code Online (Sandbox Code Playgroud)

现在我有一个类似json的数据结构:

m = {'a': {'b': {'c': 'lolcat'}}}
Run Code Online (Sandbox Code Playgroud)

所以从'x'生成的嵌套字典应该能够遍历'm'

m['a']['b']['c']
Run Code Online (Sandbox Code Playgroud)

让我成为猫.

Pet*_*nov 5

li = ['a','b','c']

d = reduce(lambda x, y: {y:x}, reversed(li+['']))

print(d)
print(d['a']['b']['c'])
Run Code Online (Sandbox Code Playgroud)

  • 这仅适用于单个配置项 (3认同)
  • 不用说你的解决方案很糟糕,我想指出Alex Martelli的[这个答案](http://stackoverflow.com/questions/1892324/why-program-functionally-in-python/1892614#1892614)批评使用lambdas和减少. (3认同)