是否有方法访问嵌套for循环中生成器中每个元素的属性?

2024-05-01 00:54:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我发现了关于在对象属性上循环的类似代码问题,但我无法解决我遇到的问题

以下是我的代码工作:

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'

我怎样才能解决这个问题?多谢各位


Tags: 代码nameinid元素列表for属性
1条回答
网友
1楼 · 发布于 2024-05-01 00:54:17

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))

相关问题 更多 >