从...开始
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
有可能最终得到
OrderedDict([('a', 1), ('__C__', 3), ('b', 2)])
确保'__C__'
项目之前'b'
和之后,'a'
即保持秩序?
从...开始
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
(使用它的长度)并将其第一项(通过传递False
给.popitem()
:此方法的默认值是弹出最后一项)弹出到k
和v
(分别代表key和value)中来工作;然后在OrderedDict
.
通过对字典的整个大小重复这个逻辑,它有效地完全旋转了字典,从而重新创建了原始顺序。