有没有办法在嵌套的for循环中访问生成器中每个元素的属性?

时间:2019-04-05 14:58:13

标签: python list dictionary generator nested-loops

我想在生成器和列表上运行嵌套循环。在循环中,我想访问每个元素的属性。

我发现了类似的关于遍历对象属性的代码问题,但我无法解决遇到的问题。

下面是我的代码工作:

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'

我该如何解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:2)

  

我遇到一个问题,就是python无法在.append方法内的“名称”上循环。

循环 循环f_list的值,并将它们分配给变量name。问题在于属性访问表达式(例如sub.name)不会检查本地范围内是否存在匹配的变量,而是将名称替换为其值。是否存在名为name的局部变量并不会改变sub.name会在子对象上寻找一个字面名为“ name”的属性的事实。

给定包含属性名称的字符串,您可以使用getattr获取对象的属性。

sub_dict[name].append(getattr(sub,name))