python - 有没有办法在嵌套的 for 循环中访问生成器中每个元素的属性?
问题描述
我想在生成器和列表上运行嵌套循环。在循环中,我想访问每个元素的属性。
我发现了关于循环对象属性的类似代码问题,但我无法解决我遇到的问题。
以下是我的代码工作:
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 不会在 .append 方法中循环“名称”。
循环遍历 的值并将f_list
它们分配给变量name
。问题是属性访问表达式,例如sub.name
,不检查匹配变量的本地范围并将名称替换为其值。局部变量命名的存在或不存在name
不会改变sub.name
将在子对象上查找字面上命名为“名称”的属性的事实。
给定一个包含属性名称的字符串,您可以使用它getattr
来获取对象的属性。
sub_dict[name].append(getattr(sub,name))
推荐阅读
- python - 在 django 中提及或标记用户或任何模型
- postgresql - Liquibase 变更集和 PostgreSQL JSONB 箭头函数
- yaml - Hasura 端点作为环境变量
- r - 使用 grid 和 gridExtra 为 R 中的 PDF 表添加标题
- r - 查找具有特定模式的字符串
- java - 将参数传递给模型类时,类型不匹配
- php - 如何将 MySQL 数据库从 v5.7.19 部署到远程 MySQL 数据库 v5.5.6
- php - 添加到类别页面 Opencart 上的愿望清单按钮:2.3.0.2
- python - 如何在对第一个数据帧的某些列执行数学函数时从现有数据帧的每第 n 行创建一个新数据帧
- excel - Excel 中有没有办法根据其他单元格的信息在新列中创建新字符串?