【发布时间】:2020-08-22 17:12:12
【问题描述】:
我已经实现了一个python类来生成数据如下:
class Array:
def __init__(self):
self.arr = [1,2,3,4,5,6,7,8]
def __getitem__(self,key):
return self.arr[key]
a = Array()
for i in a:
print(i, end = " ")
它按预期运行,我得到关注
1 2 3 4 5 6 7 8
但是,我想对字典做同样的事情。为什么我不能像这样遍历字典?
class Dictionary:
def __init__(self):
self.dictionary = {'a' : 1, 'b' : 2, 'c': 3}
def __getitem__(self,key):
return self.dictionary[key]
d = Dictionary()
for key in d:
print(key, d[key], end=" ")
我希望有以下输出
a 1 b 2 c 3
但是当我运行上面的代码时,我得到以下错误:
Traceback (most recent call last):
File "<ipython-input-33-4547779db7ec>", line 8, in <module>
for key in d:
File "<ipython-input-33-4547779db7ec>", line 6, in __getitem__
return self.dictionary[key]
KeyError: 0
我们可以像这样遍历普通字典:for key in d。这会遍历所有的键,难道不能像这样使用__getitem__()进行迭代吗?
【问题讨论】:
-
你需要实现一个迭代器模式
-
@NikosM。对不起,我不知道那是什么意思。是否与
__getitem()__的一些变化有关?
标签: python python-3.x dictionary iterator