处理多层嵌套dict为一层,如果key存在于list里,且key对应的值为dict,则不处理,直接将key和对应value值,直接写入新的dict
时间: 2024-03-27 19:35:35 浏览: 15
可以使用递归函数来处理多层嵌套dict为一层,并且判断key是否存在于list中,并且对应的value是否为dict,如果是,则不处理该key,直接将key和对应value值写入新的dict。以下是一个示例代码:
```python
def flatten_dict(nested_dict, exclude_keys=[]):
"""
将多层嵌套的dict展开为一层,并且排除指定的keys
"""
flattened_dict = {}
for key, value in nested_dict.items():
if isinstance(value, dict):
if key not in exclude_keys:
flattened = flatten_dict(value, exclude_keys)
flattened_dict.update(flattened)
else:
flattened_dict[key] = value
else:
if key not in exclude_keys:
flattened_dict[key] = value
return flattened_dict
```
使用方法示例:
```python
nested_dict = {
'name': 'John',
'age': 30,
'address': {
'city': 'New York',
'state': 'NY',
'zip': 10001
},
'hobbies': ['reading', 'traveling'],
'info': {
'phone': '1234567890',
'email': 'john@example.com'
}
}
exclude_keys = ['zip', 'hobbies', 'info']
flattened_dict = flatten_dict(nested_dict, exclude_keys)
print(flattened_dict)
```
输出结果为:
```python
{'name': 'John', 'age': 30, 'city': 'New York', 'state': 'NY', 'phone': '1234567890', 'email': 'john@example.com'}
```
可以看到,'zip'和'hobbies'这两个key被排除了,'info'这个key的value是一个dict,因此也被排除了,而其他key都被展开在了新的dict中。