Джанго: `MergeDict "устарел, используйте" dict.update()` вместо этого
Я получаю следующее сообщение:
RemovedInDjango19Warning: MergeDict is deprecated, use dict.update() instead.
Текущий код:
return MergeDict(dict_a, dict_b)
Это не решение, так как dict_a модифицируется:
return dict_a.update(dict_b) #1
Кроме того, dict_a является экземпляром пользовательского класса, который не поддерживает копирование (он ленив и создает элементы на лету в зависимости от ключа), поэтому я не могу просто сделать:
new=dict()
new.update(dict_a)
new.update(dict_b)
return new
Как мне заменить MergeDict?
1 ответ:
Вы можете использовать
collections.ChainMap. Он делает то же самое, что иMergeDict: сохраняет список отображений и обращается к ним по порядку.Однако обычно проще просто выполнить слияние словарей. Вероятно, нет ничего невозможного в том, чтобы добавить поддержку копирования в свой пользовательский класс и просто обновить его.
Comments