Python中3层及n层嵌套字典转换为DataFrame的实现方法
解决方案
固定3层嵌套字典实现
原尝试代码的问题在于最后一层循环仍然遍历了第二层的父字典,且循环变量名重复覆盖了取值,修正后的列表推导式写法如下:
rows = [ [top_key, mid_key, bottom_key, value] for top_key, mid_dict in data.items() for mid_key, bottom_dict in mid_dict.items() for bottom_key, value in bottom_dict.items() ]
转换为DataFrame可直接使用pandas的DataFrame构造方法,支持自定义列名:
import pandas as pd df = pd.DataFrame(rows, columns=["顶层键", "中层键", "底层键", "对应值"])
任意n层嵌套字典通用实现
如果需要适配不确定层数的嵌套字典,可以用递归方法扁平化处理:
def flatten_nested_dict(nested_dict, parent_keys=None): parent_keys = parent_keys or [] result = [] for key, value in nested_dict.items(): current_keys = parent_keys + [key] if isinstance(value, dict): result.extend(flatten_nested_dict(value, current_keys)) else: result.append(current_keys + [value]) return result
调用示例:
# 传入任意层数的嵌套字典即可得到扁平化的行数据 flat_rows = flatten_nested_dict(data) # 转换为DataFrame,可根据实际层数自定义列名 df = pd.DataFrame(flat_rows)
内容的提问来源于stack exchange,提问作者StressedBoi69420
相关产品推荐
相关产品推荐

