python: 从OrderedDict中按数字索引获取项目的有效方法。

问题描述 投票:0回答:1

是否有办法实现等效的? item 如下图所示的方法,它能在不复制所有数据或循环的情况下提供同样的功能? 所以在这个例子中,它将返回 ('bar', 20).

from collections import OrderedDict

class MyOrderedDict(OrderedDict):

    def item(self, index):
        return list(self.items())[index]


d = MyOrderedDict()
d["foo"] = 10
d["bar"] = 20
d["baz"] = 25

print(d.item(1))
python ordereddictionary
1个回答
1
投票

你可以尝试

from collections import OrderedDict

class MyOrderedDict(OrderedDict):
    name_to_index = {}
    def item(self, index):
        return tuple([self.name_to_index[index], self[self.name_to_index[index]]])

    def __setitem__(self, key, value):
        self.name_to_index[len(self.name_to_index)] = key
        super().__setitem__(key, value)


d = MyOrderedDict()
d["foo"] = 10
d["bar"] = 20
d["baz"] = 25

print(d.item(1))

产量

('bar', 20)

这段代码将在每个值的赋值中存储索引和键,当你调用有索引的项目时,它将返回索引位置的相关值。

© www.soinside.com 2019 - 2024. All rights reserved.