更新 OrderedDict 的位置值?
Update OrderedDict's value at position?
如何更新 OrderedDict 在特定位置(从 0 开始)的值?
所以:
od = OrderedDict(a=1, b=2, c=3)
od.update({'b': 4}) # a=1, b=4, c=3
od.update_values(2, 1) # a=2, b=1, c=3
这很简单 - 只需使用 od[od.keys()[x]] = y
这也适用于字典(尽管那将毫无意义。)该代码只是获取 orderedDict 的键的 list
,然后从列表中获取所需位置的条目,然后使用该字符串作为原始 orderedDict 的键。
您可以就地更新现有元素的有序字典而不更改顺序:
>>> 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)])
如果你想要一个方法来做到这一点,只需继承 OrderedDict:
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)])
如何更新 OrderedDict 在特定位置(从 0 开始)的值? 所以:
od = OrderedDict(a=1, b=2, c=3)
od.update({'b': 4}) # a=1, b=4, c=3
od.update_values(2, 1) # a=2, b=1, c=3
这很简单 - 只需使用 od[od.keys()[x]] = y
这也适用于字典(尽管那将毫无意义。)该代码只是获取 orderedDict 的键的 list
,然后从列表中获取所需位置的条目,然后使用该字符串作为原始 orderedDict 的键。
您可以就地更新现有元素的有序字典而不更改顺序:
>>> 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)])
如果你想要一个方法来做到这一点,只需继承 OrderedDict:
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)])