如何在遍历所述类的字典时返回类值

2024-04-27 15:07:23 发布

您现在位置:Python中文网/ 问答频道 /正文

在这种简化的形式中,我希望在迭代类的字典时返回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

我错过了什么来让它工作?或者这是可能的


Tags: inself列表for字典foodefbar
2条回答

你在打印钥匙。改为打印值:

for k in aDict:
    print aDict[k]

或者您可以直接迭代这些值:

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

您的classTest类上的__iter__没有被使用,因为您没有迭代classTest对象(不是说它写得有道理。)

你不是在类上迭代,而是在字典上迭代。而且你的类没有__getitem__-方法,所以你的__iter__甚至不能工作

为了得到你的结果,你可以

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

相关问题 更多 >