Django中数组的并集和交集

Posted

技术标签:

【中文标题】Django中数组的并集和交集【英文标题】:Union and Intersection of Arrays in Django 【发布时间】:2013-10-23 02:09:42 【问题描述】:
if(filter[0][0]):
    films_material_PP = GlassFilm.objects.filter(f_material = 'PP')
else:
    films_material_PP = GlassFilm.objects.none()

if(filter[0][1]):
    films_material_PVC = GlassFilm.objects.filter(f_material = 'PVC')
else:
    films_material_PVC = GlassFilm.objects.none()


if(filter[1][0]):
    films_color_Grey = GlassFilm.objects.filter(f_color = 'Grey')
else:
    films_color_Grey = GlassFilm.objects.none()

if(filer[1][1]):
    films_color_Yellow = GlassFilm.objects.filter(f_color = 'Yellow')
else:
    films_color_Yellow = GlassFilm.objects.none()

films_material.union(films_material_PP,films_material_PVC)
films_color.union(films_color_Grey,films_color_Yellow)
films_total.intersect(films_material,films_color)

我们如何在 Django 中实现最后三个语句?我看过其他类似的问题,请注意我不是在寻找

GlassFilm.objects.filter((Q(f_material = 'PP') | Q(f_material = 'PVC')) & (Q(f_color = 'Grey')|Q(f_color = 'Yellow')))

*编辑:*这是我想要实现的目标。我为用户提供两种类型的 html 复选框 (1) 材料 (2) 颜色

在 Material 中有两个选项“PP”和“PVC”,用户可以勾选。同样,用户可能会勾选颜色中的两个复选框(“灰色”和“黄色”)。 如果用户勾选“PP”和“灰色”,我想显示具有这两个属性的对象。如果用户只勾选“PP”,我只想显示材质为“PP”的那些对象。如果用户同时勾选“PP”和“PVC”,那么我想显示那些材质为“PP”或“PVC”的对象。

正是出于这个目的,我想要一个与上述代码等效的代码。现在 union()intersect() 函数只是伪代码,我真的想要正确的 django/python 代码。

【问题讨论】:

您为什么不寻找特定的解决方案? 联合部分***.com/questions/4411049/… @goncalopp 因为if(filter) 语句。我只想根据某些条件获得几个GlassFilm 对象。 我不确定您所说的 if(filter) 是什么意思。如果您指的是filter python 函数,那么您提到的代码不会那样工作。 “过滤”由数据库引擎完成,不是由 python 完成。这应该比从数据库中获取所有对象然后在python中进行设置操作更有效,这似乎是您正在寻找的解决方案 不!我指的是类型的陈述:if(filter[1][0]): 【参考方案1】:

您可以使用&| 运算符执行set 对象的交集和并集:

intersection = queryset1 & queryset2

union = queryset1 | queryset2

【讨论】:

以上是关于Django中数组的并集和交集的主要内容,如果未能解决你的问题,请参考以下文章

查找分组变量的并集和交集

用java编写程序,求集合的并集、交集和差集

Arules 中规则的并集和交集在算术上是有意义的

java对两个字符串数组取交集并集和差集

《算法零基础100讲》(第53讲) 区间问题 区间的并集和交集

列表交集,并集和差集