python - 将键列表转换为嵌套字典

标签 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)

但结果是这样的:

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

我的目标是这个输出:

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

更新

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

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

print(d)

最佳答案

只需一个简单的 for 循环就可以解决问题

>>> d = {}
>>> for k in reversed(keys):
...     d = {k: d}
...     
>>> d
{'key1': {'key2': {'key3': {}}}}

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

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

关于python - 将键列表转换为嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46368027/

相关文章:

python - 在字典列表中搜索的最有效方法

python - sys.stdin 在 ctrl-d 上不关闭

python - 使用 Recorder 模块进行 Kivy 单元测试

python - 我有一个存储为 numpy 数组的字典,典型的键的格式为

python-3.x - 将字典嵌套在另一个字典中,按 Pandas Dataframe 中的值进行分组

string - 在二维矩阵中排列 3 个字母的单词,使得每一行、每一列和对角线形成一个单词

python - 如何在python中使用print语句测试文件写入

python - Webots 中的远程对象创建

python - Pycharm中的双重打印

json - 无法使用 SwiftyJSON 访问 JSON