将键列表转换为嵌套字典

Rip*_*de4 1 python dictionary

我试图找出如何创建,例如,一个看起来像这样的字典:d[keys[0]][keys[1]][keys[2]]从这样的列表:keys = ["key1", "key2", "key3"]...

我尝试过以下方法:

  keys = ["key1", "key2", "key3"]
  d = {}
  d_ref= d
  for key_num, key in enumerate(keys):
    if key_num < len(keys)-1:
      d[key] = {}
      d_ref = d[key]
    else:
      d_ref[key] = []
  print(d)
Run Code Online (Sandbox Code Playgroud)

但结果如下:

{'key1': {}, 'key2': {'key3': []}}

我的目标是这个输出:

{'key1' : { 'key2' : { "key3" : [] } } }

更新

感谢wim的回答让我得到了我想要的结果:

keys = ["key1", "key2", "key3"]
d = []
for key in reversed(keys):
   d = {key: d}

print(d)
Run Code Online (Sandbox Code Playgroud)

wim*_*wim 7

只需一个简单的for循环即可

>>> d = {}
>>> for k in reversed(keys):
...     d = {k: d}
...     
>>> d
{'key1': {'key2': {'key3': {}}}}
Run Code Online (Sandbox Code Playgroud)

(编辑: OP在发布后更改了问题)如果您想要列表作为初始值,只需更改第一个作业:

>>> d = []
>>> for k in reversed(keys):
...     d = {k: d}
...     
>>> d
{'key1': {'key2': {'key3': []}}}
Run Code Online (Sandbox Code Playgroud)