Django:`MergeDict`已被弃用,请使用`dict.update()`替代。

3

我收到了这个消息:

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个回答

3

您可以使用collections.ChainMap。它与MergeDict执行相同的操作:维护映射列表并按顺序访问它们。

但是,实际执行字典合并通常更简单。将复制支持添加到自定义类中并进行更新可能并非不可能。


这与OP给出的代码有何不同?问题在于dict_a是惰性的。 - Selcuk
@guettli 使用ChainMap - Bakuriu
@Bakuriu感谢您的回答。ChainMap非常好用。对于那些固定在Python2.7上的人:在pypi上有一个可用的后移版本:https://pypi.python.org/pypi/chainmap/ - guettli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接