首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(递归)如何从具有嵌套对象和数组的对象中获取所有键/值对

从具有嵌套对象和数组的对象中获取所有键/值对的方法是使用递归。递归是一种通过调用自身的方式来解决问题的方法。

以下是一个示例代码,用于从具有嵌套对象和数组的对象中获取所有键/值对:

代码语言:txt
复制
def get_all_key_value_pairs(obj):
    pairs = []

    if isinstance(obj, dict):
        for key, value in obj.items():
            if isinstance(value, (dict, list)):
                nested_pairs = get_all_key_value_pairs(value)
                for nested_key, nested_value in nested_pairs:
                    pairs.append((key + '.' + nested_key, nested_value))
            else:
                pairs.append((key, value))
    elif isinstance(obj, list):
        for index, value in enumerate(obj):
            if isinstance(value, (dict, list)):
                nested_pairs = get_all_key_value_pairs(value)
                for nested_key, nested_value in nested_pairs:
                    pairs.append((str(index) + '.' + nested_key, nested_value))
            else:
                pairs.append((str(index), value))

    return pairs

这个函数接受一个嵌套对象和数组的对象作为参数,并返回一个包含所有键/值对的列表。如果值是嵌套对象或数组,它会递归调用自身来获取嵌套键/值对,并将它们添加到列表中。

以下是一个示例输入和输出:

代码语言:txt
复制
obj = {
    'key1': 'value1',
    'key2': {
        'nested_key1': 'nested_value1',
        'nested_key2': 'nested_value2'
    },
    'key3': [
        {'array_key1': 'array_value1'},
        {'array_key2': 'array_value2'}
    ]
}

pairs = get_all_key_value_pairs(obj)
for key, value in pairs:
    print(key, value)

输出:

代码语言:txt
复制
key1 value1
key2.nested_key1 nested_value1
key2.nested_key2 nested_value2
key3.0.array_key1 array_value1
key3.1.array_key2 array_value2

这个方法可以用于从具有嵌套对象和数组的对象中提取所有键/值对,无论嵌套层级有多深。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券