首页 > 解决方案 > 如何在 Python 中将 abcd 转换为类似 {'a': {'b': {'c': {'d':}}}} 的东西?

问题描述

我已经编写了有关如何执行此操作并输出它的逻辑,但我无法以循环/递归样式编写此结构。

string = "a.b.c.d"
parent = {}
keys = string.split(".")

parent[keys[0]] = dict()
parent[keys[0]][keys[1]] = dict()
parent[keys[0]][keys[1]][keys[2]] = dict()

以下部分逻辑需​​要编码:

parent[keys[0]] = dict()
parent[keys[0]][keys[1]] = dict()
parent[keys[0]][keys[1]][keys[2]] = dict()

and so on.....

标签: pythondictionary

解决方案


您可以使用split('.', 1)连续断开其余部分的第一部分并将其传递给您的递归调用:

def dictify(s):
  if '.' not in s:
    return s
  key, rest = s.split('.', 1)
  return {key: dictify(rest)}

测试一下:

>>> dictify('a.b.c.d')
{'a': {'b': {'c': 'd'}}}

如果您希望最后一级也有一个空字典,而不仅仅是作为值,您可以return s在第一部分更改为return {s: {}}


推荐阅读