Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在遍历所述类的字典时返回类值_Python_Dictionary_Iterator - Fatal编程技术网

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

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

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

我错过了什么才能让它发挥作用?或者这可能吗?

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

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,如果您需要值,这解释了它为什么会这样做。谢谢