python - 如何递归迭代复杂的python对象?

标签 python

我有这样的对象:

et = {  
    "applications": [
        {
        "applications_application": 'value',
        "application_journalNumber": 'value',
        "appParticipants": [
            {
                "appParticipant_inn": "value",
                "appParticipant_kpp": "value",
                "legalForm_code": "value"
            }
            ]
        }
    ]
}

我需要递归地遍历它的所有键。我怎样才能做到呢?我想要得到类似的东西:

applications
applications_application
application_journalNumber
appParticipants
appParticipant_inn
appParticipant_kpp
legalForm_code

我的不起作用的解决方案:

def myprint(d):
    for k, v in d.items():
      if isinstance(v, dict):
        myprint(v)
      else:
        if isinstance(v, list):
            myprint(v[0])

附注每个数组中只有一项。

最佳答案

怎么样:

def traverse_dict(d):
    keys = []
    for key, item in d.items():
        keys.append(key)
        if isinstance(item, dict):
            keys.extend(traverse_dict(item))
        elif isinstance(item, list):
            for d in item:
                keys.extend(traverse_dict(d))
    return keys

关于python - 如何递归迭代复杂的python对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57755392/

相关文章:

python - 在基于另一列的列中重复值

python - 如何读取一个大的二进制文件并通过一些标记拆分其内容

python - 存储在矩阵中的图像的边缘检测

python - 凌乱的 Python 安装? (OS X)

python - 在 python 中存储 html

python - Django:如何为内联模型表单集中的字段设置初始值?

python - 使用 DFS 计算树的深度

python - 删除除小数点以外的所有零位小数

python - 为什么我使用 Flask-Autodoc 得到 "No module named ' flask.ext'"?

python - 需要一次迭代 pandas.DataFrame 3 行的数据清理