В принципе, было бы нормально сохранить данные из списка data_1 и просто заменить files.name именами из списка data_2, тот же путь. Или умножьте элемент в data_2, назначив подзаголовок и удалив все элементы data_2.files, которые не соответствуют путям, указанным в списке data_1.
Во всяком случае, я начал делать что-то вроде:
for d1 in data_1:
for d2 in data_2:
d1_key = (d1.get("title"), d1.get("priority"))
d2_key = (d1.get("title"), d1.get("priority"))
if d1_key == d2_key:
for df in d1.get("files"):
if any(df.get("path") in entry.get("path") for entry in d2.get("files")):
print("Help! There must be easier way!")
И я не думаю, что это достаточно ясно, чтобы вдаваться в подробности.
Не могли бы вы предложить какой-либо другой способ объединения список создан?
merged = [ { "title": "System", "priority": "medium", "subtitle": "mason", "files": [ {"name": "mason", "path": "/tmp/mason/mason.json"}, {"name": "build", "path": "/tmp/mason/build.json"} ]}, { "title": "System", "priority": "medium", "subtitle": "kylie", "files": [ {"name": "build", "path": "/tmp/kylie/build.tar"}, {"name": "kylie", "path": "/tmp/kylie/kylie.json"} ]} ] [/code] В принципе, было бы нормально сохранить данные из списка data_1 и просто заменить files.name именами из списка data_2, тот же путь. Или умножьте элемент в data_2, назначив подзаголовок и удалив все элементы data_2.files, которые не соответствуют путям, указанным в списке data_1. Во всяком случае, я начал делать что-то вроде: [code]for d1 in data_1: for d2 in data_2: d1_key = (d1.get("title"), d1.get("priority")) d2_key = (d1.get("title"), d1.get("priority")) if d1_key == d2_key: for df in d1.get("files"): if any(df.get("path") in entry.get("path") for entry in d2.get("files")): print("Help! There must be easier way!") [/code] И я не думаю, что это достаточно ясно, чтобы вдаваться в подробности. Не могли бы вы предложить какой-либо другой способ объединения список создан?