如何在迭代所述类的字典时返回类值

时间:2015-05-04 21:47:07

标签: 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["bar"] = classTest("yy")

for i in aDict:
    print i

当前输出

foo
bar

我的目标是此输出为

xx
yy

我错过了什么让这个工作?或者这甚至可能吗?

2 个答案:

答案 0 :(得分:3)

你没有迭代这些类,而是字典。此外,您的课程没有__getitem__ - 方法,因此您的__iter__甚至无法使用。

要获得结果,您可以

for value in aDict.values():
    print value.bar1

答案 1 :(得分:1)

您正在打印密钥。改为打印值:

for k in aDict:
    print aDict[k]

或者您可以直接迭代值:

for v in aDict.itervalues():   # Python 3: aDict.values()
    print v

__iter__课程classTest未被使用,因为您没有在classTest对象上进行迭代。 (并不是说它写得有意义。)