可以使用递归函数来按嵌套值筛选对象数组的每个元素。
以下是一个示例代码:
def filter_nested_objects(data, key, value):
result = []
for obj in data:
if isinstance(obj, dict):
if key in obj and obj[key] == value:
result.append(obj)
else:
nested_result = filter_nested_objects(obj.values(), key, value)
if nested_result:
result.append(nested_result)
elif isinstance(obj, list):
nested_result = filter_nested_objects(obj, key, value)
if nested_result:
result.append(nested_result)
return result
这个函数接受三个参数:data
(对象数组)、key
(要筛选的键名)和value
(要筛选的值)。它会递归遍历对象数组中的每个元素,筛选出包含指定键和值的对象,并返回一个新的数组。
以下是使用示例:
data = [
{
"name": "Alice",
"age": 20,
"children": [
{
"name": "Bob",
"age": 3
},
{
"name": "Charlie",
"age": 5
}
]
},
{
"name": "Eve",
"age": 25,
"children": [
{
"name": "Frank",
"age": 2
}
]
}
]
filtered_data = filter_nested_objects(data, "age", 3)
print(filtered_data) # 输出:[{'name': 'Alice', 'age': 20, 'children': [{'name': 'Bob', 'age': 3}, {'name': 'Charlie', 'age': 5}]}]
这个示例会筛选出包含"age"
键值为3
的对象,并返回一个新的数组。在这个例子中,只有第一个对象满足条件,因为它的"children"
数组中包含一个"age"
为3
的对象。
上一篇:按嵌套引用筛选Mongoose
下一篇:按嵌套字典的项目对字典进行排序