Python列表理解Django对象

2024-04-28 02:35:55 发布

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

我正在开发一个dictionary Django应用程序,其中DefinitionTag。我编写这个通用函数是为了从Definition列表中收集所有Tag

这是我当前的工作版本:

def get_tags(definitions):
    tags = []
    for d in definitions:
        tags += d.tags.all()
    return tags

我试图使用Python的列表理解来实现同样的目标:

tags = []
return [tags.extend(d.tags.all()) for d in definitions]

然而,这段代码还不起作用。我错过了什么

有没有一种更巧妙的方法可以在一行中完成这项工作,而不用创建tags变量,或者使用yield语句


Tags: django函数in版本应用程序列表fordictionary
1条回答
网友
1楼 · 发布于 2024-04-28 02:35:55

您需要迭代所有元素d.tags.all(),因此需要一个嵌套的列表comp:

tags = [t for d in definitions for t in d.tags.all()]

这只是以下内容的列表理解版本:

tags = []
for d in definitions:
    for t in d.tags.all():
        tags.append(t)

相关问题 更多 >