用python写一个获取字典中嵌套列表中字典查询的方法
时间: 2024-01-28 16:05:47 浏览: 122
可以使用递归函数来实现获取字典中嵌套列表中字典查询的方法,代码如下:
```python
def find_dict_in_nested_list(d, key):
"""
在字典中嵌套列表中查找指定键值的字典
:param d: 字典或嵌套列表
:param key: 要查找的键值
:return: 包含指定键值的字典或None
"""
if isinstance(d, dict):
if key in d:
return d
else:
for k, v in d.items():
if isinstance(v, (dict, list)):
result = find_dict_in_nested_list(v, key)
if result is not None:
return result
elif isinstance(d, list):
for item in d:
if isinstance(item, (dict, list)):
result = find_dict_in_nested_list(item, key)
if result is not None:
return result
return None
```
其中,该函数接受两个参数:要查找的字典或嵌套列表 d,以及要查找的键值 key。函数首先判断 d 是否为字典类型,如果是,则在该字典中查找是否包含指定键值 key,如果包含,则返回该字典;否则,遍历该字典中所有的键值对,如果值为字典或列表类型,则递归调用函数进行查找,如果找到则返回结果。如果 d 为列表类型,则遍历该列表中的每个元素,如果元素为字典或列表类型,则递归调用函数进行查找,如果找到则返回结果。如果没有找到,则函数返回 None。
使用示例:
```python
d = {
"name": "John",
"age": 25,
"hobbies": [
{
"name": "reading",
"level": "high"
},
{
"name": "swimming",
"level": "medium"
}
]
}
result = find_dict_in_nested_list(d, "level")
print(result)
```
输出结果为:
```
{'name': 'reading', 'level': 'high'}
```
阅读全文