嵌套字典处理

新手上路,请多包涵

题目描述

嵌套字典处理

题目来源及自己的思路

多个原始字典 甲乙丙丁。。。。。 内包含多个键 ABCDEFG。。。。

相关代码

1201_dict = {'甲':{'采集':{'A':10}}};
1202_dict = {'乙':{'采集':{'A':15,'B':20}}};
1203_dict = {'丙':{'采集':{'B':35,'C':45}}};
1204_dict = {'丁':{'采集':{'A':100,'B':200,'C':5,'D':50}}};
....

你期待的结果是什么?实际看到的错误信息又是什么?

{'采集':{'A': {'甲': '10', '乙': '15', '丁': 100}, 'B': {'乙': '20', '丙': '35', '丁': 200},'C':{'丙': '45', '丁': 5},'D':{'丁': 50}}}

阅读 992
1 个回答

这样的数据结构没有特别好的处理方法,只能直接按提取规则进行处理。

其实根据你的情况,采集那一级都可以不要的,因为没有特别的意义。

其实就分别建立ABCDEFG各个对象,然后遍历数据,进行各自对象子键的添加,最后再把所有的合成为1个大的对象,大致伪代码如下:

# 根据你的数据生成的一个列表,方便遍历
AListDicts=[{'甲':{'采集':{'A':10}}},
        {'乙':{'采集':{'A':15,'B':20}}},
        {'丙':{'采集':{'B':35,'C':45}}},
        {'丁':{'采集':{'A':100,'B':200,'C':5,'D':50}}}
       ]

RTObj={'A':{},'B':{},'C':{},'D':{},'E':{},'F':{},'G':{}}

def getInfo( inObj ):
    keys=list(inObj.keys())
    return (keys[0],inObj[keys[0]]['采集'])

# 开始遍历原始数据
for OldData in AListDicts:
    akey,cjObj = getInfo( OldData )
    akeys=cjObj.keys()
    for bkey in akeys:
        RTObj[bkey][akey]=cjObj[bkey]

print(RTObj)
print({'采集':RTObj})

此外你的语法不对,python中没有结束的;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进