如何在遍历所述 class 的字典时 return 一个 class 值
How to return a class value when iterating through a dictionary of said class
在这个简化的形式中,我想在迭代 class 的字典时 return 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
class 上的 __iter__
没有被使用,因为您没有迭代 classTest
对象。 (并不是说它写的有任何意义。)
您不是在遍历 classes,而是在字典上。此外,您的 class 没有 __getitem__
-Method,因此您的 __iter__
甚至无法工作。
要获得结果,您可以这样做
for value in aDict.values():
print value.bar1
在这个简化的形式中,我想在迭代 class 的字典时 return 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
class 上的 __iter__
没有被使用,因为您没有迭代 classTest
对象。 (并不是说它写的有任何意义。)
您不是在遍历 classes,而是在字典上。此外,您的 class 没有 __getitem__
-Method,因此您的 __iter__
甚至无法工作。
要获得结果,您可以这样做
for value in aDict.values():
print value.bar1