python把多层嵌套的字典转化成一层的字典,多层嵌套的部分,键名称只保留最里层的键名称
时间: 2024-02-27 15:57:35 浏览: 125
可以使用递归函数来实现将多层嵌套的字典转化成一层的字典,代码如下:
```python
def flatten_dict(d, parent_key='', sep='_'):
items = []
for k, v in d.items():
new_key = parent_key + sep + k if parent_key else k
if isinstance(v, dict):
items.extend(flatten_dict(v, new_key, sep=sep).items())
else:
items.append((new_key, v))
return dict(items)
```
这个函数接受三个参数:要被转化的字典d,父键名parent_key(默认为空),分隔符sep(默认为下划线)。该函数首先遍历字典d的键值对,对于每一个键值对,如果它的值是一个字典,则递归调用flatten_dict函数,将其转化成一层的字典,并将结果加入到items列表中。如果它的值不是一个字典,则将其加入到items列表中。最后,将items列表转化成一个字典并返回。
相关问题
python把多层嵌套的字典转化成一层的字典
可以使用递归函数来实现将多层嵌套的字典转化成一层的字典。以下是一个示例代码:
```python
def flatten_dict(d, parent_key='', sep='_'):
items = []
for k, v in d.items():
new_key = parent_key + sep + k if parent_key else k
if isinstance(v, collections.MutableMapping):
items.extend(flatten_dict(v, new_key, sep=sep).items())
else:
items.append((new_key, v))
return dict(items)
```
使用方法如下:
```python
nested_dict = {
'a': 1,
'b': {
'c': 2,
'd': {
'e': 3
}
}
}
flattened_dict = flatten_dict(nested_dict)
print(flattened_dict)
# {'a': 1, 'b_c': 2, 'b_d_e': 3}
```
该函数将多层嵌套的字典 `nested_dict` 转化成了一层的字典 `flattened_dict`。
阅读全文