python - 重构此 Python 代码以迭代容器

标签 python django refactoring iterator

肯定有更好的方法吗?

results = []
if not queryset is None:
    for obj in queryset:
        results.append((getattr(obj,field.attname),obj.pk))

问题是有时 queryset 是 None,当我尝试迭代它时会导致异常。在这种情况下,我只想将结果设置为一个空列表。此代码来自 Django View ,但我认为这无关紧要——这似乎是一个更一般的 Python 问题。

编辑: 我发现是我的代码将空查询集变成“无”而不是返回空列表。能够假设查询集始终是可迭代的,通过允许删除“if”语句来简化代码。下面的答案可能对遇到同样问题但无法修改代码以保证查询集不是“无”的其他人有用。

最佳答案

results = [(getattr(obj, field.attname), obj.pk) for obj in queryset or []]

关于python - 重构此 Python 代码以迭代容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/495294/

相关文章:

powershell - 是否有将默认值与读取主机一起使用的一线工具?

python - 如何使用 fmin_ncg 计算成本和 theta

refactoring - Python:将此检查重构为自己的方法是否有意义?

python - 图例中的分割标记和线条 - Matplotlib

python - 使用 django-piston 时出现 400 Bad Request 错误

python - Django - 循环导入模块和子模块

python - manage.py 创建 super 用户 : AttributeError: module 'os' has no attribute 'PathLike'

intellij-idea - Groovy 和 IntelliJ : how to extract variable with explicit type declaration?

python - Mp3 下载 urllib.request.urlopen() 超时

python - 替换文件中的字符串