所以几天前我在 Python 中发现了 Sets,我很惊讶以前从未想过它们,尽管它们让很多事情变得非常简单。我稍后再举个例子。
有些事情我还不清楚。文档说可以从可迭代对象中创建集合,并且操作员总是返回新的集合,但是他们总是将所有数据从一个集合复制到另一个集合并从可迭代对象中复制吗?我处理大量数据,并且希望拥有与 itertools 非常相似的 Set 和集合运算符。因此 Sets([iterable]) 更像是一个包装器,并且运算符 union、intersection 等将返回“iSets”并且不会复制任何数据。一旦我迭代我的最终集合,他们都会评估。最后,我真的很想拥有“iSet”运营商。
目的: 我使用 mongoengine 与 MongoDB 合作。我保存了文章。有些与用户相关联,有些被标记为已读,有些则显示给用户,依此类推。将它们包装在不加载所有数据的集合中将是组合、相交等它们的好方法。显然我可以进行特殊查询,但并非总是如此,因为 MongoDB 不支持连接。所以我最终在 Python 中进行连接。我知道那时我可以使用关系数据库,但是,我不需要经常进行连接,而且在我的情况下,MongoDB 的优势超过了它们。
所以你怎么看?是否已经有第三方模块?几行结合 itertools 和 Sets 可以吗?
编辑: 我接受了 Martijn Pieters 的回答,因为它显然是正确的。我最终只将 ID 加载到集合中以使用它们。此外,Python 中的集合具有相当好的运行时间。