DeepDiff помечает весь вложенный объект JSON какvalues_changed вместо добавленных/удаленных значений.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 DeepDiff помечает весь вложенный объект JSON какvalues_changed вместо добавленных/удаленных значений.

Сообщение Anonymous »

Я использую DeepDiff для сравнения двух вложенных объектов JSON в Python, но столкнулся с проблемой при сравнении словарей с более чем двумя ключами. Различия не разбиты на словарь_item_added, словарь_item_removed и Values_changed, как я ожидал. Вот пример:
Вот как я хочу, чтобы он вёл себя:

Код: Выделить всё

expected  = {"name":"Cake","image":{"width":200,"height":{"cm":200,"inch":15}}}
actual = {"name":"Cake","image":{"width":250,"height":{"cm":290,"foot":10}}}
ddiff = DeepDiff(expected, actual)
print(ddiff, '\n\n')
Выход:

Код: Выделить всё

{'dictionary_item_added': ["root['image']['height']['foot']"], 'dictionary_item_removed': ["root['image']['height']['inch']"], 'values_changed': {"root['image']['width']": {'new_value': 250, 'old_value': 200}, "root['image']['height']['cm']": {'new_value': 290, 'old_value': 200}}}
Но когда я добавляю по одному ключу к фактическому и ожидаемому, получается следующее:

Код: Выделить всё

expected  = {"name":"Cake","image":{"width":200,"height":{"cm":200,"inch":15,"mile":20}}}
actual = {"name":"Cake","image":{"width":250,"height":{"cm":290,"foot":10,"yard":90}}}
ddiff = DeepDiff(expected, actual)
print(ddiff, '\n\n')
Выход:

Код: Выделить всё

{'values_changed': {"root['image']['width']": {'new_value': 250, 'old_value': 200}, "root['image']['height']": {'new_value': {'cm': 290, 'foot': 10, 'yard': 90}, 'old_value': {'cm': 200, 'inch': 15, 'mile': 20}}}}
Ожидаемый результат:

Код: Выделить всё

{'dictionary_item_added': ["root['image']['height']['foot']", "root['image']['height']['yard']"], 'dictionary_item_removed': ["root['image']['height']['inch']", "root['image']['height']['mile']"], 'values_changed': {"root['image']['width']": {'new_value': 250, 'old_value': 200}, "root['image']['height']['cm']": {'new_value': 290, 'old_value': 200}}}
Как мне добиться желаемого результата?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ad-of-valu
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»