问题描述
我有这样的输入字典:
{
"objects": [
{
"objType": "master","objName": "sampleOne","objTitle": "Sample One"
},{
"objType": "master","objName": "sampleTwo","objTitle": "Sample Two"
},]
}
并且我想将键 objType
的相同值分组以生成如下字典
{
"objects": [
{
"objType": "master","objDetails": [
{
"objName": "sampleOne","ObjectTitle": "Sample One"
},{
"objName": "sampleTwo","ObjectTitle": "Sample Two"
}
]
]
}
我使用了 pandas groupby 但无法获得所需的输出。
解决方法
鉴于您的数据采用多层结构,我不确定 Pandas 是否适合您想要完成的任务。以下函数将根据您的示例输入和所需输出正确解析您的数据。
def transform(di):
tmp = dict()
for ntry in di['objects']:
tval = tmp.pop(ntry['objType'],[])
indict = dict()
indict['objName'] = ntry['objName']
indict['ObjectTitle'] = ntry['objTitle']
tval.append(indict)
tmp[ntry['objType']] = tval
return {'objects': tmp}
给定输入
di = {
"objects": [
{
"objType": "master","objName": "sampleOne","objTitle": "Sample One"
},{
"objType": "master","objName": "sampleTwo","objTitle": "Sample Two"
}
]
}
transform(di)
产生:
{'objects':
{'master': [{'objName': 'sampleOne','ObjectTitle': 'Sample One'},{'objName': 'sampleTwo','ObjectTitle': 'Sample Two'}]}}