更新OrderedDict在职位上的价值?

2024-09-28 19:00:48 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在特定位置(从0开始)更新OrderedDict的值? 所以:

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

Tags: updateordereddictvaluesod
2条回答

可以为现有元素就地更新有序dict,而不更改顺序:

>>> 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)])

这很简单-只要使用od[od.keys()[x]] = y

这也适用于字典(尽管这毫无意义)。代码只需获取orderedDict键的list,然后从列表中的所需位置获取条目,然后将该字符串用作原始orderedDict的键。

相关问题 更多 >