【问题标题】:Is there a way to access each element's attribute in generator in nested for loop?有没有办法在嵌套的 for 循环中访问生成器中每个元素的属性?
【发布时间】:2019-08-27 12:37:27
【问题描述】:

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

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

以下是我的代码工作:

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 方法中的“名称”赋值。

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】:

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

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

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

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

    【讨论】:

    • 是的,我做了一个令人困惑的声明。谢谢,我检查了它,它就像一个魅力。 :)
    猜你喜欢
    • 2017-05-27
    • 2020-09-14
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2020-01-06
    • 1970-01-01
    相关资源
    最近更新 更多