У меня есть два массива словарей, и я пытаюсь проверить, точно ли два значения соответствуют значениям другого словаря, по каждому значению, а затем вернуть значение только этого значения и только один раз , Метод, который я попробовал, дал результаты, намного превосходящие исходный массив. Пример ниже.
first = [{“num1”: 1, “num2”: 2}, {“num1”: 1, “num2”: 3}, {“num1”: 1, “num2”: 4}, {“num1”: 2, “num2”: 5}]
second = [{“num1”: 1, “num2”: 7, “num3”: 10}, {“num1”: 1, “num2”: 3, “num3”: 8}, {“num1”: 3, “num2”: 4, “num3”: 5}, {“num1”: 1, “num2”: 2, “num3”: 5}, {“num1”: 2, “num2”: 5, “num3”: 11}, {“num1”: 1, “num2”: 8, “num3”: 9}]
Вот как выглядят массивы. Я пытаюсь проверить, соответствуют ли значения второго массива обоим элементам первого массива независимо от их положения, а затем добавить всю эту запись из второго массива в новый массив. Итак, после запуска будет создан новый массив, содержащий 2-ю, 4-ю и 5-ю записи из второго массива.
Я попробовал следующее:
for item in first:
for entry in second:
if item[“num1”] == entry[“num1”]:
if item[“num2”] == entry[“num2”]:
new_array.insert(len(new_array), entry)
if item[“num2”] == entry[“num3”]:
new_array.insert(len(new_array), entry)
if item[“num1”] == entry[“num2”]:
if item[“num2”] == entry[“num3”]:
new_array.insert(len(new_array), entry)
Однако, когда я запускаю это, я получаю массивный массив, намного больше, чем исходный массив. Затем я удалил все повторяющиеся значения и обнаружил, что он был того же размера, что и исходный второй словарь, поэтому он просто без разбора копировал каждую запись.
Что я делаю не так?