从...开始
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
有可能最终结束
OrderedDict([('a', 1), ('__C__', 3), ('b', 2)])
确保'__C__'
项目在'b'
之前和'a'
之后,即保持秩序?
你可以尝试:
>>> d = OrderedDict([('a', 1), ('c', 3), ('b', 2)])
>>> d
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
>>> d2 = OrderedDict([('__C__', v) if k == 'c' else (k, v) for k, v in d.items()])
>>> d2
OrderedDict([('a', 1), ('__C__', 3), ('b', 2)])
如果你想改变当前的字典对象:
def change_key(self, old, new):
for _ in range(len(self)):
k, v = self.popitem(False)
self[new if old == k else k] = v
这通过遍历整个OrderedDict
(使用其长度)和pop'ing its first item(通过将False
传递给.popitem()
:此方法的默认值是弹出最后一项)到k
和v
(分别代表键和值)来工作;然后在OrderedDict
的末尾插入此键/值对或新键及其原始值。
通过对dict的整个大小重复该逻辑,它有效地完全旋转了dict,从而重新创建原始顺序。