是否有办法实现等效的? 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))
你可以尝试
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)
这段代码将在每个值的赋值中存储索引和键,当你调用有索引的项目时,它将返回索引位置的相关值。