Как объединить массив объектов и удалить дубликаты по условию

Есть массив объектов

status_data = [
    {
        "id": "id_1",
        "like": [
            {
                "status": "xx",
                "sum": 70
            }
        ],
    },
    {
        "id": "id_2",
        "like": [
            {
                "status": "xx",
                "sum": 8
            },
            {
                "status": "zz",
                "sum": 4
            }
        ]
    }
]

Второй массив объектов

status_static = [
            {
                "status": "xx",
                "sum": 0
            },
            {
                "status": "zz",
                "sum": 0
            },
            {
                "status": "yy",
                "sum": 0
            }
]

Необходимый результат

result = [
   {
        "id": "id_1",
        "like": [
            {
                "status": "xx",
                "sum": 70
            },
            {
                "status": "zz",
                "sum": 0
            },
            {
                "status": "yy",
                "sum": 0
            }
        ],
    },
    {
        "id": "id_2",
        "like": [
            {
                "status": "xx",
                "sum": 0
            },
            {
                "status": "yy",
                "sum": 8
            },
            {
                "status": "zz",
                "sum": 4
            }
        ]
    }
]

Необходимо добавить объекты в массив like, не добавляя дубликаты (python)

Добавляю status_static в status_data

for index, i in enumerate(status_data):  
  for m in status_static: 
    status_data[index]['like'].append(m)

Удаляю дубликаты, но затираются заполненные (там где sum не равна 0)

for index, m in enumerate(status_data):  
   status_data[index]['like'] = list({v['status']: v for v in m['like']}.values())

Не правильный результат

result = [
   {
        "id": "id_1",
        "like": [
            {
                "status": "xx",
                "sum": 0
            },
            {
                "status": "zz",
                "sum": 0
            },
            {
                "status": "yy",
                "sum": 0
            }
        ],
    },
    {
        "id": "id_2",
        "like": [
            {
                "status": "xx",
                "sum": 0
            },
            {
                "status": "yy",
                "sum": 0
            },
            {
                "status": "zz",
                "sum": 0
            }
        ]
    }
]

Ответы (1 шт):

Автор решения: strawdog

Можно пройтись циклами по обеим переменным с проверкой на ключи:

for i, x in enumerate(status_data):
    statuses = [y["status"] for y in x['like']]
    for z in status_static:
        if z["status"] not in statuses:        
            status_data[i]["like"].append(z)

status_data:

[{'id': 'id_1',
  'like': [{'status': 'xx', 'sum': 70},
           {'status': 'zz', 'sum': 0},
           {'status': 'yy', 'sum': 0}]},
 {'id': 'id_2',
  'like': [{'status': 'xx', 'sum': 8},
           {'status': 'zz', 'sum': 4},
           {'status': 'yy', 'sum': 0}]}]
→ Ссылка