У меня возникают проблемы с выяснением того, как объединить уникальные значения ключей из одного списка в другой список, в котором словари имеют повторяющиеся значения.
Два списка создаются из разных источников, которые имеют некоторыеповторение значений «имя» и не всегда следовать одному и тому же индексу.Таким образом, бывают случаи, когда коррелирующий набор значений ключей появляется в одном списке и далее в его индексе (или, возможно, раньше).Кроме того, два списка списка могут не совпадать по длине с одним, содержащим больше записей, чем другим.
Я пробовал несколько вложенных циклов, но я не могу понять, как обрабатывать одновременное индексированиеи перезапуск цикла для объектов, которые еще не сопоставлены.Я также получил бы ошибку в конце из-за несоответствия диапазона в словарях списка.
Вот что я попробовал:
listOne = [{'name': 'Article 1 series', 'description': 'aaa'},
{'name': 'Article 2', 'description': 'bbb'},
{'name': 'Article 1 series', 'description': 'abb'},
{'name': 'Article 3 series', 'description': 'cccc'}]
listTwo = [{'name': 'Article 1 series', 'link': 'www.google.com'},
{'name': 'Article 2', 'link': 'www.yahoo.com'},
{'name': 'Article 3 series', 'link': 'www.bing.com'},
{'name': 'Article 1 series', 'link': 'www.google.com/test'},
{'name': 'Article 4', 'link': 'www.duckduckgo.com'}]
firstList = len(listOne)
secondList = len(listTwo)
while listTwo:
for i in range(firstList):
if i <= secondList:
if listOne[i]["name"] == listTwo[0]["name"]:
print("found")
listOne.append(listTwo[0]["link"])
else:
continue
else:
break
listTwo.pop(0)
В конечном счете, так как значения ключей "name" совпадают, яхотелось бы объединить значение ключа "ссылка" в соответствующий найденный индекс listOne.В противном случае ищите предыдущее несоответствующее или следующее соответствующее значение ключа «name».Если в listOne нет значения ключа «name» или все индексы в listOne совпадают, остановите цикл и удалите все оставшиеся значения из listTwo.
Таким образом, listOne должен выглядеть следующим образом:
listOne = [{'name': 'Article 1 series', 'description': 'aaa','link': 'www.google.com'},
{'name': 'Article 2', 'description': 'bbb', 'link': 'www.yahoo.com'},
{'name': 'Article 1 series', 'description': 'abb', 'link': 'www.google.com/test'},
{'name': 'Article 3 series', 'description': 'cccc', 'link': 'www.bing.com'}]