Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python合并并添加两个字典列表_Python_Python 3.x - Fatal编程技术网

使用Python合并并添加两个字典列表

使用Python合并并添加两个字典列表,python,python-3.x,Python,Python 3.x,我有两个字典列表和一段试图合并它们的代码: Json_Final =[] try: for keyIN in JSON1: json_data_Merge= {} for keyUS in JSON2: if(keyIN['YEAR'] == keyUS['YEAR']) & (keyIN['MONTH'] == keyUS['MONTH'])& (keyIN[

我有两个字典列表和一段试图合并它们的代码:

Json_Final =[]
try:            
    for keyIN in JSON1:
        json_data_Merge= {}
        for keyUS in JSON2:                
            if(keyIN['YEAR'] == keyUS['YEAR']) & (keyIN['MONTH'] == keyUS['MONTH'])& (keyIN['Name'] == keyUS['Name']):
                json_data_Merge['YEAR'] = keyIN['YEAR']
                json_data_Merge['MONTH'] = keyIN['MONTH']
                json_data_Merge['Name'] = keyIN['Name']
                json_data_Merge['Total']= int(keyIN['Total']) + int(keyUS['Total'])
        Json_Final.append(json_data_Merge)
    print( Json_Final )
except Exception as e:
    print('MergeException',e)

JSON 1 = [{"YEAR": 2019, "MONTH": 1, "Name": "Apple", "Total": 100}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Grape", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Apple", "Total": 300}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Grape", "Total":  100}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Apple", "Total":  200}]

JSON 2 = [{"YEAR": 2019, "MONTH": 1, "Name": "Apple", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 1, "Name": "Orange", "Total": 300}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Grape", "Total": 400}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Orange", "Total": 300}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Mango", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Grape", "Total":  500}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Orange", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Apple", "Total":  250}]
预期产出:

[{"YEAR": 2019, "MONTH": 1, "Name": "Apple", "Total": 300}, 
 {"YEAR": 2019, "MONTH": 1, "Name": "Orange", "Total": 300}, 
 {"YEAR": 2019, "MONTH": 2, "Name": "Grape", "Total": 600},
 {"YEAR": 2019, "MONTH": 2, "Name": "Apple", "Total": 300}, 
 {"YEAR": 2019, "MONTH": 2, "Name": "Orange", "Total": 300}, 
 {"YEAR": 2019, "MONTH": 2, "Name": "Mango", "Total": 200}, 
 {"YEAR": 2019, "MONTH": 3, "Name": "Grape", "Total":  600}, 
 {"YEAR": 2019, "MONTH": 3, "Name": "Orange", "Total": 200}, 
 {"YEAR": 2019, "MONTH": 3, "Name": "Apple", "Total":  450}]
我的代码输出:

[{"YEAR": 2019, "MONTH": 1, "Name": "Apple", "Total": 300}, 
{"YEAR": 2019, "MONTH": 2, "Name": "Grape", "Total": 600}, 
{"YEAR": 2019, "MONTH": 3, "Name": "Grape", "Total":  300}, 
{"YEAR": 2019, "MONTH": 3, "Name": "Apple", "Total":  450}]
这是一种方法

Ex:

JSON_1 = [{"YEAR": 2019, "MONTH": 1, "Name": "Apple", "Total": 100}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Grape", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Apple", "Total": 300}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Grape", "Total":  100}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Apple", "Total":  200}]

JSON_2 = [{"YEAR": 2019, "MONTH": 1, "Name": "Apple", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 1, "Name": "Orange", "Total": 300}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Grape", "Total": 400}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Orange", "Total": 300}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Mango", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Grape", "Total":  500}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Orange", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Apple", "Total":  250}]

JSON_2 = {"{}_{}_{}".format(i["YEAR"], i["MONTH"], i["Name"]): i for i in JSON_2}    #Create a dict for easy loopup

for i in JSON_1:
    key = "{}_{}_{}".format(i["YEAR"], i["MONTH"], i["Name"])   #Create key with Year, Month, Name
    if key in JSON_2:                         #Check if item from JSON_1 exist in JSON_2
        JSON_2[key]['Total'] += i["Total"]    #Update Total
    else:
        JSON_2[key] = i                       #Else add new entry. 

print(list(JSON_2.values()))    #Get values.
[{'MONTH': 1, 'Name': 'Orange', 'Total': 300, 'YEAR': 2019},
 {'MONTH': 2, 'Name': 'Mango', 'Total': 200, 'YEAR': 2019},
 {'MONTH': 3, 'Name': 'Apple', 'Total': 450, 'YEAR': 2019},
 {'MONTH': 1, 'Name': 'Apple', 'Total': 300, 'YEAR': 2019},
 {'MONTH': 3, 'Name': 'Grape', 'Total': 600, 'YEAR': 2019},
 {'MONTH': 3, 'Name': 'Orange', 'Total': 200, 'YEAR': 2019},
 {'MONTH': 2, 'Name': 'Grape', 'Total': 600, 'YEAR': 2019},
 {'MONTH': 2, 'Name': 'Apple', 'Total': 300, 'YEAR': 2019},
 {'MONTH': 2, 'Name': 'Orange', 'Total': 300, 'YEAR': 2019}]
输出:

JSON_1 = [{"YEAR": 2019, "MONTH": 1, "Name": "Apple", "Total": 100}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Grape", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Apple", "Total": 300}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Grape", "Total":  100}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Apple", "Total":  200}]

JSON_2 = [{"YEAR": 2019, "MONTH": 1, "Name": "Apple", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 1, "Name": "Orange", "Total": 300}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Grape", "Total": 400}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Orange", "Total": 300}, 
          {"YEAR": 2019, "MONTH": 2, "Name": "Mango", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Grape", "Total":  500}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Orange", "Total": 200}, 
          {"YEAR": 2019, "MONTH": 3, "Name": "Apple", "Total":  250}]

JSON_2 = {"{}_{}_{}".format(i["YEAR"], i["MONTH"], i["Name"]): i for i in JSON_2}    #Create a dict for easy loopup

for i in JSON_1:
    key = "{}_{}_{}".format(i["YEAR"], i["MONTH"], i["Name"])   #Create key with Year, Month, Name
    if key in JSON_2:                         #Check if item from JSON_1 exist in JSON_2
        JSON_2[key]['Total'] += i["Total"]    #Update Total
    else:
        JSON_2[key] = i                       #Else add new entry. 

print(list(JSON_2.values()))    #Get values.
[{'MONTH': 1, 'Name': 'Orange', 'Total': 300, 'YEAR': 2019},
 {'MONTH': 2, 'Name': 'Mango', 'Total': 200, 'YEAR': 2019},
 {'MONTH': 3, 'Name': 'Apple', 'Total': 450, 'YEAR': 2019},
 {'MONTH': 1, 'Name': 'Apple', 'Total': 300, 'YEAR': 2019},
 {'MONTH': 3, 'Name': 'Grape', 'Total': 600, 'YEAR': 2019},
 {'MONTH': 3, 'Name': 'Orange', 'Total': 200, 'YEAR': 2019},
 {'MONTH': 2, 'Name': 'Grape', 'Total': 600, 'YEAR': 2019},
 {'MONTH': 2, 'Name': 'Apple', 'Total': 300, 'YEAR': 2019},
 {'MONTH': 2, 'Name': 'Orange', 'Total': 300, 'YEAR': 2019}]

你发布的代码有什么问题?除了它在语法上显然无效之外。@jornsharpe根据月份和名称,我需要将这两个JSON的总数相加。如果名称不可用,则只需将其添加到输出中。对,但SO并不是为了提供满足您需求的实现,那么您的代码有什么问题?告诉我们您的代码实际打印的内容。如果它存在于两个JSON列表中,则我的代码只会添加总数。