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

问题描述 投票:1回答:1

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

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

以下是我的代码工作:

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'

我怎样才能解决这个问题?谢谢。

python list dictionary generator nested-loops
1个回答
2
投票

我遇到了一个问题,即python没有在.append方法中循环'name'。

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

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

sub_dict[name].append(getattr(sub,name))
© www.soinside.com 2019 - 2024. All rights reserved.