如何只保留json列表的json中的某些字段?

问题描述 投票:0回答:1

我有这个数据结构:

[
    {
        'field_a': 8, 
        'field_b': 9, 
        'field_c': 'word_a', 
        'field_d': True, 
        'children': [
                        {
                            'field_a': 9, 
                            'field_b': 9, 
                            'field_c': 'word_b', 
                            'field_d': False, 
                            'chilren': [
                                            {
                                                'field_a': 9, 
                                                'field_b': 9, 
                                                'field_c': 'wod_c', 
                                                'field_d': False, 
                                                'chilren': [
                                                           ]
                                            }
                                       ]
                        }
                    ]
    }
]

我想保留(用于打印目的)这样的东西:

[
    {
        'field_c': 'word_a', 
        'children': [
                        {
                            'field_c': 'word_b', 
                            'chilren': [
                                            {
                                                'field_c': 'wod_c', 
                                                'chilren': [
                                                           ]
                                            }
                                       ]
                        }
                    ]
    }
]

实现它的最Pythonic方法是什么?

我无法修改原始数据,但我可以复制它

python json hierarchy
1个回答
0
投票

您可以使用递归函数遍历嵌套结构并创建仅包含所需字段的新字典。这是一个例子:

import copy

def filter_data(data):
    filtered_data = []
    for item in data:
        new_item = {'field_c': item['field_c']}
        if 'children' in item:
            new_item['children'] = filter_data(item['children'])
        filtered_data.append(new_item)
    return filtered_data

original_data = [...]  # your original data
filtered_data = filter_data(copy.deepcopy(original_data))
print(filtered_data)

在您的示例中,我看到您只需要特定字段,对于嵌套,您可以在此处看到

new_item['children'] = filter_data(item['children'])

我们正在递归地调用我们的函数。

我认为这是一种迂腐的做法

© www.soinside.com 2019 - 2024. All rights reserved.