我想在生成器和列表上运行嵌套循环。在循环中,我想访问每个元素的属性。
我发现了类似的关于遍历对象属性的代码问题,但我无法解决遇到的问题。
下面是我的代码工作:
gen = api.search_submissions() # gen is generator of submissions
f_list = ['id','title']
sub_dict = {
'id':[],
'title':[]
}
for sub in gen:
for name in f_list:
sub_dict[name].append(sub.name)
我遇到一个问题,就是python没有在.append方法中将值赋给'name'。
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
AttributeError: 'submission' object has no attribute 'name'
我该如何解决这个问题?谢谢。
答案 0 :(得分:2)
我遇到一个问题,就是python无法在.append方法内的“名称”上循环。
循环 循环f_list
的值,并将它们分配给变量name
。问题在于属性访问表达式(例如sub.name
)不会检查本地范围内是否存在匹配的变量,而是将名称替换为其值。是否存在名为name
的局部变量并不会改变sub.name
会在子对象上寻找一个字面名为“ name”的属性的事实。
给定包含属性名称的字符串,您可以使用getattr
获取对象的属性。
sub_dict[name].append(getattr(sub,name))