Иметь этот dict -> dict -> list list
Хотите сравнить 2 структуры такого типа.
one = {"1iG5NDGVre": {"118": ["test1", "test2", "test3", "tcp", "22", "Red", "0.0.0.0/0"]}}
two = {"1iG5NDGVre": {"118": ["test1", "test2", "test3", "tcp", "22", "Red", "Blue", "0.0.0.0/0"]}}
Этот код хорошо работает:
def compare(one,two):
for mainkey in one:
for subkey in one[mainkey]:
return set(one[mainkey][subkey]) ^ set(two[mainkey][subkey])
Однако когда у dict -> dict больше или меньше ключей, она должна возвращаться функцией, ключ которой был добавлен или удален вместе со всеми значениями списка.
Также, если список был изменен, он должен быть возвращен программойчто список был изменен.
Кто-нибудь может помочь с этим?
Он довольно часто используется для сравнения двух JSON, я хочу видеть, когда ключи были удалены, добавлены или изменены его значения.
Обновление 1:
Я все еще изучаю Python
Для этой структуры:
one = {"1iG5NDGVre": {"118": ["test1", "test2", "test3", "tcp", "22", "Red", "0.0.0.0/0"]}}
two = {"1iG5NDGVre": {"118": ["test1", "test2", "test3", "tcp", "22", "Red", "Blue", "0.0.0.0/0"]},"119": ["test10","test11"]}
Не работает.
Он должен печатать как вывод:
118 was modified. New values Blue. 119 was added with values test10 test11
и для этих сценариев:
1.
one = {"1iG5NDGVre": {"118": ["test1", "test2", "test3", "tcp", "22", "Red", "0.0.0.0/0"]}}
two = {"1iG5NDGVre": }
Должен печатать как вывод:
118 was removed with values test1 test2 test3 tcp 22 Red 0.0.0.0/0
2.
one = {"1iG5NDGVre": {"118": ["test1", "test2", "test3", "tcp", "22", "Red", "0.0.0.0/0"]}}
two = {"1iG5NDGVre": {"118": ["test100", "test200", "test3", "tcp", "22", "Red", "Blue", "0.0.0.0/0"]},"119": ["test10","test11"]}
Должен печататься как вывод:
118 was modifed. New values test100 test200
Я хочу охватить все возможные случаи.Я делаю это, как я сказал для сравнения JSON.