python - 基于统一对象将 JSON 元素分组在一起 [Python]

标签 python json

基于以下 JSON

 "Records":   [
        {
      "Action_Id": "5542.3478.137599",
      "SKU": "DSOLSSREDGUM_V",
      "SubId1": "1011l4dIyBtf",

    },
        {
      "Action_Id": "5542.3477.118504",
      "SKU": "DSOLSSREDGUM_V",
      "SubId1": "1101l4dI2VPX",

    },
        {
      "Action_Id": "5542.3477.118504",
      "SKU": "PARCMEPGR15_C6",
      "SubId1": "1101l4dI2VPX",

    },
        {
      "Action_Id": "5542.3477.117975",
      "SKU": "DSOLSSREDGUM_V",
      "SubId1": "1101l4dI2Hwz",
    },
        {
      "Action_Id": "5542.3477.117852",
      "SKU": "DSOLSSREDGUM_V",
      "SubId1": "1101l4dI2EZK",

    }
  ]
}

我想根据 Action_Id 对元素进行分组。因此,使用上述数据,输出将是

{"Records": [
    {
        "Action_Id:":"5542.3477.118504",
            "Items":
                [
                    {
                        "SKU":"DSOLSSREDGUM_V",
                        "SubId1":"1101l4dI2VPX"
                    },
                    {
                        "SKU":"PARCMEPGR15_C6",
                        "SubId1":"1101l4dI2VPX"
                    }
                ],
    },
    {
        "Action_Id":"5542.3478.137599",
            "Items":
                [
                    {
                        "SKU":"DSOLSSREDGUM_V",
                        "SubID1":"1011l4dIyBtf"
                    }
                ],
    },
    {
        "Action_Id":"5542.3477.117975",
            "Items":
                [
                    {
                        "SKU":"DSOLSSREDGUM_V",
                        "SubID1":"1101l4dI2Hwz"
                    }
                ],
    },
    {
        "Action_Id":"5542.3477.117852",
            "Items":
                [
                    {
                        "SKU":"DSOLSSREDGUM_V",
                        "SubID1":"1101l4dI2EZK"
                    }
                ],
    }

]
}

最佳答案

试试这个方法:

import collections,itertools
a_dict = { "Records":   [
        {
      "Action_Id": "5542.3478.137599",
      "SKU": "DSOLSSREDGUM_V",
      "SubId1": "1011l4dIyBtf",

    },
        {
      "Action_Id": "5542.3477.118504",
      "SKU": "DSOLSSREDGUM_V",
      "SubId1": "1101l4dI2VPX",

    },
        {
      "Action_Id": "5542.3477.118504",
      "SKU": "PARCMEPGR15_C6",
      "SubId1": "1101l4dI2VPX",

    },
        {
      "Action_Id": "5542.3477.117975",
      "SKU": "DSOLSSREDGUM_V",
      "SubId1": "1101l4dI2Hwz",
    },
        {
      "Action_Id": "5542.3477.117852",
      "SKU": "DSOLSSREDGUM_V",
      "SubId1": "1101l4dI2EZK",

    }
  ]
}
temp_dict = collections.defaultdict(list)
for key, group in itertools.groupby(a_dict['Records'], lambda item: item["Action_Id"]): #group by Action_Id
    for e in group:        
        del e['Action_Id'] #remove key,value for key = Action_Id
        temp_dict[key].append(e) 

result_list=  [{'Action_Id':key, 'Items': value} for key,value in temp_dict.items()]
result_dict = {"Records":result_list}
result_dict

result_dict 将是:

{'Records': [{'Action_Id': '5542.3478.137599',
   'Items': [{'SKU': 'DSOLSSREDGUM_V', 'SubId1': '1011l4dIyBtf'}]},
  {'Action_Id': '5542.3477.117975',
   'Items': [{'SKU': 'DSOLSSREDGUM_V', 'SubId1': '1101l4dI2Hwz'}]},
  {'Action_Id': '5542.3477.118504',
   'Items': [{'SKU': 'DSOLSSREDGUM_V', 'SubId1': '1101l4dI2VPX'},
    {'SKU': 'PARCMEPGR15_C6', 'SubId1': '1101l4dI2VPX'}]},
  {'Action_Id': '5542.3477.117852',
   'Items': [{'SKU': 'DSOLSSREDGUM_V', 'SubId1': '1101l4dI2EZK'}]}]}

关于python - 基于统一对象将 JSON 元素分组在一起 [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45046885/

相关文章:

python - 推断 Pandas DataFrame

python - 安装 python 模块时出错

python - 我什么时候应该使用 setUpClass 什么时候使用 __init__?

python - 有没有办法使用 `json.dump` 和 `gzip` ?

javascript - Node EJS 将数据传递给包含

java - JSON 对象数组到普通旧 java 对象

python - 如何在需要时启用滚动功能?

javascript - 有没有办法监视对象的更改?

json - Jaxb 是否需要 @XmlElement

python - 使用 selenium 和 python 从下拉菜单中选择一个选项