You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现从嵌套字典生成逐个移除单个键的字典列表?

问题:生成移除单个键的嵌套字典列表

场景需求

需要遍历一个嵌套JSON对象(Python字典),返回一个字典列表,每个字典都是原字典移除任意一个键后的副本,原始数据结构未知。

当前进展

已经编写了一个递归函数可以遍历并打印对象中的所有键值对,但这不是需要的功能。

函数定义要求

  • 函数接收一个dict类型参数,返回dict列表
  • 列表中的每个元素都是原字典移除一个键后的副本:原字典有N个键(包括所有嵌套层级的键),就返回N个对应移除单个键的字典
  • 如果被移除的键包含嵌套值,需一并移除,例如移除根键后会得到空字典

现有代码

def iterate_keys(data: dict):
    # 目前只做到这一步
    for key, value in data.items():
        if type(value) in [dict, ]:
            iterate_keys(value)
        elif type(value) in [list, ]:
            for item in value:
                if type(item) in [dict]:
                    iterate_keys(item)
        print(key, value)

# def what_i_really_want(data: dict) -> list:
    # return [dict1, dict2, ...]

if __name__ == '__main__':
    test_dict = {
        "a": "a",
        "c": {
            "c1": [
                {"c11": "c11"},
                {"c12": "c12"},
            ]
        },
    }

    iterate_keys(test_dict)

期望输出

对于上述test_dict,理想返回结果如下:

result_should_be = [
        {
            # 移除了"a"
            "c": {
                "c1": [
                    {"c11": "c11"},
                    {"c12": "c12"},
                ]
            }
        },
        # 移除了"c11"
        {
            "a": "a",
            "c": {
                "c1": [
                    {"c12": "c12"},
                ]
            }
        },
        # 移除了"c12"
        {
            "a": "a",
            "c": {
                "c1": [
                    {"c11": "c11"},
                ]
            }
        },
        # 移除了"c1"
        {
            "a": "a",
            "c": {}
        },
        # 移除了"c"
        {
            "a": "a"
        },
    ]

最终用途

实现该功能用于生成一系列测试用例。


内容的提问来源于stack exchange,提问作者lulian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:55:26