合并Python字典时保持插入顺序

3

我读到 Python 3.6+ 保持字典插入顺序。如果我合并两个 Python 字典:

x = {"a":5, "d":3}
y = {"c":1, "b":2}
z = x | y

这是否确保z中的项目按照精确插入顺序排列,即现在z将是

{"a":5, "d":3, "c":1, "b":2}

如果不行,我该如何获得我想要的 z?

4
你尝试合并这两个字典然后看看结果了吗? - Kemp
这回答解决了你的问题吗?[如何在单个表达式中合并两个字典(取字典的并集)?] (https://dev59.com/43VD5IYBdhLWcg3wQJOT) - queste
你在意插入顺序的原因是什么?字典不是为了排序而设计的。使用OrderedDict可能更适合你。 - Sayse
1
@Kemp 是的,只是想确保它是可推广的。 - goober
1
@queste 这个问题并没有涉及到生成字典的顺序。 - goober
1
@Sayse 请看这里 - goober
1个回答

3

是的,它确保插入顺序

引入这种语法的PEP(Python增强提案)PEP 584,详细说明了该运算符的行为,其中包括一个示例实现,展示其语义:

def __or__(self, other):
    if not isinstance(other, dict):
        return NotImplemented
    new = dict(self)
    new.update(other)
    return new

自从插入顺序字典被引入后,dict.update 的规定就是保持其参数的插入顺序,因此 x | y(其中 xy 均为字典)也是如此。

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