Джанго: `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?

615   1  

1 ответ:

Вы можете использовать collections.ChainMap. Он делает то же самое, что и MergeDict: сохраняет список отображений и обращается к ним по порядку.

Однако обычно проще просто выполнить слияние словарей. Вероятно, нет ничего невозможного в том, чтобы добавить поддержку копирования в свой пользовательский класс и просто обновить его.

Comments

    Ничего не найдено.