【问题标题】:Django: `MergeDict` is deprecated, use `dict.update()` insteadDjango:`MergeDict` 已弃用,请改用 `dict.update()`
【发布时间】:2016-06-13 13:27:54
【问题描述】:

我收到这条消息:

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

【问题讨论】:

    标签: python django dictionary merge


    【解决方案1】:

    您可以使用collections.ChainMap。它与MergeDict 做同样的事情:保留一个映射列表并按顺序访问它们。

    但是,实际执行字典的合并通常更简单。为您的自定义类添加复制支持并更新它可能不是不可能的。

    【讨论】:

    • 这与 OP 给出的代码有何不同?问题是 dict_a 很懒。
    • @guettli 然后使用ChainMap
    • @Bakuriu 谢谢你的回答。 ChainMap 效果很好。对于所有固定在 Python2.7 上的人:在 pypi 上有一个可用的反向端口:pypi.python.org/pypi/chainmap
    猜你喜欢
    • 2014-12-25
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多