数据转单层字典

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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))

  

posted @   NAVYSUMMER  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
历史上的今天:
2019-04-08 爬虫常用库介绍
交流群 编程书籍
点击右上角即可分享
微信分享提示