Set集合的应用场景-穿梭框
@(Python学习-随手记)[python, 帮助, Python]
问题产生
如果需求说现在需要做个穿梭框,作为后端人员如何处理后端数据,形如:
解决问题
-
方式一:前端把选中的数据和取消的数据一并传给后端
-
方式二:前端把只选中的数据发送给后端,后端将原始数据全部干掉,再按照新的选中数据添加
-
方式三:利用set集合中交并补操作,实现选中数据和取消数据的筛选操作:前端只需要将选中的数据发送给后端,后端使用
差集
操作即可 -
很明显:方式三最为合适
# 定义选中的数据集合
targer_set = {u"小李",u"张三",u"里斯",u"王五"}
# 定义数据库中的集合
db_set = {u"里斯"}
# 求出新增的选中数据,不在当前数据库中的数据
print targer_set - db_set
# 求出当前数据库取消的数据,不在选中的数据当中
print db_set-targer_set
理解
如果不好理解,可以换个思路:
- 前端传递穿梭框的内容可以理解是数据库最新的数据
- 后端查询数据库的内容可以理解是数据库旧版数据
那么
- 最新的数据与旧版数据的差集 就是 新数据新增的内容,表示原始数据库没有数据,需要新增
- 旧版的数据与最新数据的差集 就是 旧版数据需要删除的内容,表示新版数据不需要的数据,需要删除
- 最新数据和旧版数据公共拥有的 ,不需要处理