bro*_*cla 3 python reverse dictionary
为什么将 ChainMap 转换为字典会颠倒项目的顺序?
这是一个例子。
>>> d = [{'a': 1}, {'b': 2}, {'c': 3}]
>>> ChainMap(*d)
ChainMap({'a': 1}, {'b': 2}, {'c': 3})
>>> dict(ChainMap(*d))
{'c': 3, 'b': 2, 'a': 1}
Run Code Online (Sandbox Code Playgroud)
我可以编写替代代码来组合不反转的字典。
但是,我想了解为什么 ChainMap 会发生这种逆转。
看来保留订单是可取的。
请注意,ChainMap() 的迭代顺序是通过扫描最后到第一个映射来确定的。
关于 ChainMap 这样做的原因的唯一提及似乎是以下内容
这给出了与从最后一个映射开始的一系列 dict.update() 调用相同的顺序
同时,dict从几个版本之前开始保持插入顺序
字典保留插入顺序。请注意,更新密钥不会影响顺序。删除后添加的键将插入到末尾。
3.7 版更改:字典顺序保证为插入顺序。此行为是 CPython 3.6 的实现细节。
因此,当您调用时dict(ChainMap(*d)),它会迭代 ChainMap,即与 和 的顺序相反的顺序*d,这将成为新的插入顺序dict。
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |