有没有办法在嵌套的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))