我有这个数据结构:
[
{
'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方法是什么?
我无法修改原始数据,但我可以复制它
您可以使用递归函数遍历嵌套结构并创建仅包含所需字段的新字典。这是一个例子:
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'])
我们正在递归地调用我们的函数。
我认为这是一种迂腐的做法