擅长:python、mysql、java
<p>可以为现有元素就地更新有序dict,而不更改顺序:</p>
<pre><code>>>> od=MyOD(zip(['a', 'b', 'c'], [1, 2, 3]))
>>> for i, k in enumerate(od):
... if i==1:
... od[k]=1
...
>>> od
OrderedDict([('a', 1), ('b', 1), ('c', 3)])
</code></pre>
<p>如果您想要一个方法来实现这一点,只需子类OrderedDict:</p>
<pre><code>class MyOD(OrderedDict):
def update_pos(self, pos, val):
for i, k in enumerate(self):
if i==pos:
self[k]=val
return
>>> od=MyOD(zip(['a', 'b', 'c'], [1, 2, 3]))
>>> od
MyOD([('a', 1), ('b', 2), ('c', 3)])
>>> od.update_pos(1, 22)
>>> od
MyOD([('a', 1), ('b', 22), ('c', 3)])
</code></pre>