python - 获取Python中字典的所有字段名称
问题描述
有没有办法获取 Python 字典的所有嵌套字段名称?
例如:
字典:
{
"a": [
{
"b": {
"c": [
"f",
"g"
]
}
}
]
}
结果:
'a[0].b.c[0]'
'a[0].b.c[1]'
解决方案
您可以将递归与生成器一起使用:
def traverse(d, c = []):
if isinstance(d, list):
for i, a in enumerate(d):
if not isinstance(a, (dict, list)):
yield '.'.join(c+[f'[{i}]'])
else:
yield from traverse(a, c+[f'[{i}]'])
elif isinstance(d, dict):
for a, b in d.items():
if not isinstance(b, (list, dict)):
yield '.'.join(c+[a])
else:
yield from traverse(b, c+[a])
d = {'a': [{'b': {'c': ['f', 'g']}}]}
import re
print([re.sub('\.(?=\[)', '', i) for i in traverse(d)])
输出:
['a[0].b.c[0]', 'a[0].b.c[1]']
推荐阅读
- scala - Sbt 没有从当前目录加载项目
- qt-quick - 自动串行连接
- ios - iOS 14 小部件深度链接到 React-Native 应用程序失败
- database - NullPointerException 与 Hibernate criteriaQuery 间歇性发生
- mysql - SQL查询根据月度数据计算季度数据
- wordpress - 如何将“优惠结束”文本更改为西班牙语?
- python - 当字节来自 Python 中的 input() 时如何从字节创建 UUID
- spring - Spring:省略 GET 表单的 CSRF 令牌?
- javascript - Javascript 按钮启用或禁用
- c - 管道到 hexdump 时,用汇编编写的程序没有输出