Python 将两个不同JSON文件中具有相同ID的对象分组

Python 将两个不同JSON文件中具有相同ID的对象分组,python,json,Python,Json,我有两个json文件,其中包含多个objectID。我使用它们来计算具有相同ID的每个对象的平均值。我想我已经找到了使用此代码的方法: def formatAvg(): for itemcla in dataClassified: objectIdClassified = itemcla["objectID"] for itemauction in dataAuctions: objectIdAuctions = itemauct

我有两个json文件,其中包含多个
objectID
。我使用它们来计算具有相同ID的每个对象的平均值。我想我已经找到了使用此代码的方法:

def formatAvg():
    for itemcla in dataClassified:
        objectIdClassified = itemcla["objectID"]

        for itemauction in dataAuctions:
            objectIdAuctions = itemauction["objectID"]

            if objectIdClassified == objectIdAuctions:
                itemauction["avg_total"] = {}
...
formatAvg()
其中
dataClassified
dataAuctions
是列表,而
itemcla
itemautation
是具有相同objectID的对象。但它根本不起作用。我认为这是因为
if objectIdClassified==objectidActions:
行只检查objectID,但不将它们分组

dataClassified JSON的一个示例:

[{
    "objectID": 10000,
    "cars_getroute": "url",
    "car_value": 50000
},
{
    "objectID": 10001,
    "cars_getroute": "url",
    "car_value": 10000
},
{
    "objectID": 10003,
    "cars_getroute": "url",
    "car_value": 50000
}]
数据拍卖JSON的示例:

[{
    "objectID": 10000,
    "value": 52000
},
{
    "objectID": 10001,
    "value": 12000
},
{
    "objectID": 10002,
    "value": 54000
}]
正如你所看到的,秩序并不总是受到尊重。我没有任何输出,因为没有任何更改

我的预期产出:

[{
        "objectID": 10000,
        "value": 52000,
        "total_avg": 52000
    },
    {
        "objectID": 10001,
        "value": 12000,
        "total_avg": 11000
        }
    },
    {
        "objectID": 10002,
        "value": 54000,
        "total_avg": 54000
    }]

转换为dict使其更简单、更快:

def formatAvg(dataAuctions, dataClassified):
    da = {i["objectID"]: i["value"] for i in dataAuctions}
    dc = {i["objectID"]: {"cars_getroute": i["cars_getroute"], "car_value": i["car_value"]} for i in dataClassified}

    # First pass iterated on wrong list...
    #return [{"objectID": k, "value": v, "total_avg": round((da[k]+k)/2) if k in da else k} for k,v in dc.items()]
    return [{"objectID": k, "value": v, "total_avg": round((v+dc[k]['car_value'])/2) if k in dc else v} for k,v in da.items()] 

请提供一个小的(最小的)JSON示例,并考虑添加日志/输出,而不是思考,猜测不是一件坏事,但如果您的假设不正确,通常会导致浪费大量时间。日志记录只会显示正在发生的事情,通常会导致解决琐碎情况的方法。另外,O(N^2)!首先,将dataAuctions中的项目分组到一个散列中,该散列将其id映射到匹配itemauction的集合。然后,您可以计算每个集合的平均值。如果你想在一个双重嵌套的循环中做到这一点,实际上你必须在内部循环中进行两次传递answer@lf_celine-您希望看到的示例将有助于人们帮助您。另外,
dataClassified
是否真的在“车号”和“车价”之间交替?