frozenset 作为 key 存 redis

2020-01-07 16:50:13 +08:00
 LXchienne
2122 次点击
所在节点    Python
8 条回复
renmu123
2020-01-07 17:30:31 +08:00
set 对象是由具有唯一性的 hashable 对象所组成的无序多项集。 常见的用途包括成员检测、从序列中去除重复项以及数学中的集合类计算,例如交集、并集、差集与对称差集等等。 (关于其他容器对象请参看 dict, list 与 tuple 等内置类,以及 collections 模块。)

与其他多项集一样,集合也支持 x in set, len(set) 和 for x in set。 作为一种无序的多项集,集合并不记录元素位置或插入顺序。 相应地,集合不支持索引、切片或其他序列类的操作。

摘自 Python3.8 的文档
https://docs.python.org/zh-cn/3/library/stdtypes.html#set-types-set-frozenset
LXchienne
2020-01-07 18:20:25 +08:00
@renmu123 emm。。看过。。只是写了无序,但是运行结果看起来都排序了。。。我确保万无一失,转 list 后排序转 str 作为 key 存 redis 了😂
ipwx
2020-01-07 18:31:56 +08:00
@LXchienne 请一切以文档为准。。。 运行起来看上去是排序的,说不定只是因为它内部实现中,小数据量用了平衡树而已。大数据量说不定就自动切换为哈希表了。
----

顺便我想吐槽的是,"_".join(xxset) 不怕 keys 本身就有下划线么。
LXchienne
2020-01-07 18:39:14 +08:00
@ipwx 我也以文档为准,你考虑的很周全,我还没注意到,还好我得 key 是数字,感谢
Trim21
2020-01-07 18:42:18 +08:00
先排序再 join 不就可以保证唯一性了吗
LXchienne
2020-01-07 18:44:27 +08:00
@Trim21 是的,我是想能省点就省点😁
renmu123
2020-01-07 19:39:52 +08:00
@LXchienne #2 我记得有个版本字典已经开始是有序的了,但是文档写明不要依赖这个特性,将来可能随时会修改
LXchienne
2020-01-08 10:08:09 +08:00
@renmu123 嗯嗯,上线的服务还是稳妥点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/635854

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX