frn*_*nhr 20 python ordereddictionary
从...开始
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
Run Code Online (Sandbox Code Playgroud)
有可能最终结束
OrderedDict([('a', 1), ('__C__', 3), ('b', 2)])
Run Code Online (Sandbox Code Playgroud)
确保该'__C__'项目是在保持秩序之前'b'和之后'a'?
MRA*_*RAB 17
你可以尝试:
>>> 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)])
Run Code Online (Sandbox Code Playgroud)
如果你想改变当前的字典对象:
def change_key(self, old, new):
for _ in range(len(self)):
k, v = self.popitem(False)
self[new if old == k else k] = v
Run Code Online (Sandbox Code Playgroud)
这通过迭代整个OrderedDict(使用它的长度),然后弹出它的第一个项目(通过传递False给.popitem():此方法的默认值是弹出最后一个项目)k和v(分别代表键和值)来工作; 然后插入此键/值对,或者在其末尾插入具有原始值的新键OrderedDict.
通过对dict的整个大小重复该逻辑,它有效地完全旋转了dict,从而重新创建原始顺序.