有一个 while 循环需要不断的收集用户的兴趣标签,比如:运动、读书、电影等等,然后把这些标签不断的 append 的一个列表 A 中。
在 while 循环的过程中,并不存储到数据库中,只是临时存储到 sqlalchemy session 中,等整个循环做完了,在把这个列表 A 存储。
这样有个问题,比如“读书”这个标签出现两次,列表 A 中会出现两个“读书”字符串。
用什么方式,可以在查询 session 中是否已经有重复的数据出现?
1
WangYanjie 2016-11-07 09:09:07 +08:00
你是要查 session 还是列表 A ?看完你的描述也是一头包。
session 用来暂存数据库数据的是个 dict ,何来重复之说, see: http://docs.sqlalchemy.org/en/latest/orm/session_api.html#sqlalchemy.orm.session.Session.identity_map 要是 list 的重复项的话,不告诉你,这是 Python 的高级用法 |
2
rogwan OP @WangYanjie 查 sqlalchemy session 重的数据,不是列表 A 中的数据。检查列表中是不是有某个数据 for in 判断一下就可以了。但是,这个字符串还在 sqlalchemy session 中的时候,怎么判断?
list 去重的方法很多吧,只是不想生成列表后再去重,是想不把重复数据加到列表里去。 |
3
WangYanjie 2016-11-07 18:05:08 +08:00
@rogwan 怎么算重,你的“读书”是主键?自己 pdb ,看看 identity_map
|
4
rogwan OP @WangYanjie 就是列表 A 中出现,比如:['读书', '电影', '读书'],出现两次'读书'就算重复啊
|