difference = {}
for id_object in new_data:
if type(new_data[id_object]) is dict:
for key in new_data[id_object]:
if new_data[id_object][key] != old_data[id_object][key]:
difference[id_object][key] = new_data[id_object][key]
return difference
Подобный кусок [подставить нужное] выглядит сносно?
Его цель сравнить два словаря (словари структурно одинаковые, но заранее известно, что какое-то значение в ключе не совпадает у них и собрать другой словарь, который будет хранить только те ключи-значения, что отличаются.
что такое id_object
Конструкция словаря подразумевает, что первый ключ будет уникальный айди объекта. Значением у айди является словарь с названием данных и его значением. Актуальные данные, с которыми сравниваются старые - это new_data
{1: {'id': 1, 'name': 'Все сотрудники', 'description': '', 'external_id': None, 'created': 1579166240, 'path': '1'}, ...} Вот пример.
мне этот пример ничем не помогает я бы сделал с помощью dict comprehension
А не слишком "большим" будет dict comprehension? Я пытаюсь понять, что за данные поменялись, чтоб проапдейтить только их.
Может new_data U old_data?
Я, признаться, не понял Вас :( Что имеется ввиду?
U используется, как математический знак?
differences = {} for number, data in new.items(): differences[number] = {key: value for key, value in data.items() if value != old[number][key]}
Спасибо, сейчас проверю. Выглядит красиво.
differences = {number : {key: value for key, value in data.items() if value != old[number][key]} for number, data in new.items()} Чо уж тогда
Ага, спасибо, все круто.
давай совместим оба подхода differences = {key: set(value.items()) - set(old[key].items()) for key, value in new.items()}
Так так и задумано было. Он так и сделал
Обсуждают сегодня