数据转单层字典
def data2single_dict(source): stack = [(source, "")] result = {} while stack: obj, parent_name = stack.pop() if isinstance(obj, dict): for k, v in obj.items(): column_name = f"{parent_name}.{k}" if parent_name else k stack.append((v, column_name)) elif isinstance(obj, list) or isinstance(obj, tuple): for i, v in enumerate(obj): column_name = f"{parent_name}.{i}" if parent_name else f"{i}" stack.append((v, column_name)) else: result[parent_name] = obj return result data1 = { "a": { "b": { "c": 1 }, "d": 2 }, "e": 3 } data2 = { "a": { "b": { "c": [1, 2, 3] }, "d": [4, 5, 6] }, "e": [7, 8, 9], "f": 10 } data3 = [{ "a": {"b": "c"}, "d": [1, 2, 3], "f": [{"g": 4}, "5", 6] }] data4 = [{ "a": {"b": "c"}, "d": [[-1, -2], 2, 3], "f": [{"g": 4}, "5", 6] }] print(data2single_dict(data1)) print(data2single_dict(data2)) print(data2single_dict(data3)) print(data2single_dict(data4))