V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
LXchienne
V2EX  ›  Python

frozenset 作为 key 存 redis

  •  
  •   LXchienne · 2020-01-07 16:50:13 +08:00 · 2125 次点击
    这是一个创建于 1789 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 请教下,python 中 frozenset(xxset)作为 key 存储的 dict 保存到 redis,怎么处理 key 比较好?
    • "_".join(xxset)转为字符串能保持唯一性吗?
    • 其实也就是 frozenset 能不能保证多个 set (由相同元素组成)顺序一致?
    8 条回复    2020-01-08 10:08:09 +08:00
    renmu123
        1
    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
        2
    LXchienne  
    OP
       2020-01-07 18:20:25 +08:00
    @renmu123 emm。。看过。。只是写了无序,但是运行结果看起来都排序了。。。我确保万无一失,转 list 后排序转 str 作为 key 存 redis 了😂
    ipwx
        3
    ipwx  
       2020-01-07 18:31:56 +08:00
    @LXchienne 请一切以文档为准。。。 运行起来看上去是排序的,说不定只是因为它内部实现中,小数据量用了平衡树而已。大数据量说不定就自动切换为哈希表了。
    ----

    顺便我想吐槽的是,"_".join(xxset) 不怕 keys 本身就有下划线么。
    LXchienne
        4
    LXchienne  
    OP
       2020-01-07 18:39:14 +08:00
    @ipwx 我也以文档为准,你考虑的很周全,我还没注意到,还好我得 key 是数字,感谢
    Trim21
        5
    Trim21  
       2020-01-07 18:42:18 +08:00
    先排序再 join 不就可以保证唯一性了吗
    LXchienne
        6
    LXchienne  
    OP
       2020-01-07 18:44:27 +08:00
    @Trim21 是的,我是想能省点就省点😁
    renmu123
        7
    renmu123  
       2020-01-07 19:39:52 +08:00
    @LXchienne #2 我记得有个版本字典已经开始是有序的了,但是文档写明不要依赖这个特性,将来可能随时会修改
    LXchienne
        8
    LXchienne  
    OP
       2020-01-08 10:08:09 +08:00
    @renmu123 嗯嗯,上线的服务还是稳妥点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1747 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:36 · PVG 00:36 · LAX 08:36 · JFK 11:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.