有没有办法在嵌套的for循环中访问生成器中每个元素的属性?
Is there a way to access each element's attribute in generator in nested for loop?
我想 运行 生成器和列表的嵌套循环。在循环中,我想访问每个元素的属性。
我发现了关于遍历对象属性的类似代码问题,但我无法解决我遇到的问题。
下面是我的代码工作:
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'
我该如何解决这个问题?谢谢。
I ran into a problem that python does not loop over 'name' inside .append method.
循环 是 遍历 f_list
的值并将它们分配给变量 name
。问题是属性访问表达式,例如 sub.name
,不检查匹配变量的局部作用域并用它的值替换名称。是否存在名为 name
的局部变量不会改变 sub.name
将在子对象上查找字面上名为 "name" 的属性的事实。
您可以使用 getattr
获取对象的属性,给定一个包含属性名称的字符串。
sub_dict[name].append(getattr(sub,name))
我想 运行 生成器和列表的嵌套循环。在循环中,我想访问每个元素的属性。
我发现了关于遍历对象属性的类似代码问题,但我无法解决我遇到的问题。
下面是我的代码工作:
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'
我该如何解决这个问题?谢谢。
I ran into a problem that python does not loop over 'name' inside .append method.
循环 是 遍历 f_list
的值并将它们分配给变量 name
。问题是属性访问表达式,例如 sub.name
,不检查匹配变量的局部作用域并用它的值替换名称。是否存在名为 name
的局部变量不会改变 sub.name
将在子对象上查找字面上名为 "name" 的属性的事实。
您可以使用 getattr
获取对象的属性,给定一个包含属性名称的字符串。
sub_dict[name].append(getattr(sub,name))