python - 如何在 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.....
解决方案
您可以使用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: {}}
推荐阅读
- algorithm - 优化事件到日期的分布
- python - Ansible,检查库存组和主机
- node.js - 无法使用 DELETE 方法删除 mongodb 中的文档
- java - Oracle SODA API for java - 异常 - 缺少右括号
- javascript - 如何提交带有其他表单内容的 innerHTML 输出
- javascript - 将“活动”类设置为当前滑块元素
- c# - 如何发送Linux中断信号?C#
- javascript - 无法替换 html 文本字段
- naming-conventions - 在蛇案例中处理数字的正确方法是什么?
- c# - 如何将 { opencv c++ } 代码集成到使用 c# 以统一 3D 开发的移动应用程序中