Python 如何在遍历所述类的字典时返回类值
在这种简化形式中,我希望在迭代类的字典时返回bar1的值,以避免需要列表的库出现问题Python 如何在遍历所述类的字典时返回类值,python,dictionary,iterator,Python,Dictionary,Iterator,在这种简化形式中,我希望在迭代类的字典时返回bar1的值,以避免需要列表的库出现问题 class classTest: def __init__(self, foo): self.bar1 = foo def __iter__(self): for k in self.keys(): yield self[k].bar1 aDict = {} aDict["foo"] = classTest("xx") aDict["ba
class classTest:
def __init__(self, foo):
self.bar1 = foo
def __iter__(self):
for k in self.keys():
yield self[k].bar1
aDict = {}
aDict["foo"] = classTest("xx")
aDict["bar"] = classTest("yy")
for i in aDict:
print i
电流输出为
foo
bar
我的目标是将此输出
xx
yy
我错过了什么才能让它发挥作用?或者这可能吗?您正在打印钥匙。改为打印值:
for k in aDict:
print aDict[k]
或者,您可以直接迭代这些值:
for v in aDict.itervalues(): # Python 3: aDict.values()
print v
您的
classTest
类上的\uuu iter\uuu
没有被使用,因为您没有迭代classTest
对象。(并不是说它在编写时有任何意义。)您不是在类上迭代,而是在字典上迭代。另外,您的类没有\uuuu getitem\uuuuuuuu
-方法,因此您的\uuuuuuu iter\uuuuuuuuu
甚至无法工作
为了得到你的结果,你可以这样做
for value in aDict.values():
print value.bar1
您正在迭代生成键的字典aDict。您没有迭代每个单独的值。字典不会将迭代委托给包含的值。
对于aDict.values()
中的val,如果您需要值,这解释了它为什么会这样做。谢谢