不可变集合
项目描述
Python的一个不可变映射类型。
底层数据结构是哈希数组映射Trie(HAMT),在Clojure、Scala、Haskell和其他函数式语言中使用。此实现用于CPython 3.7的contextvars模块中(有关详细信息,请参阅PEP 550和PEP 567)。
基于HAMT的不可变映射在set()和get()操作中都具有O(log N)的性能,对于相对较小的映射来说,这实际上是O(1)。
以下是简单get/set基准测试的可视化,比较了HAMT与使用Python字典的写时复制方法实现的不可变映射(基准测试代码可在此处找到)
安装
immutables需要Python 3.6+,并在PyPI上提供
$ pip install immutables
API
immutables.Map是一个无序不可变映射。Map对象是可哈希的、可比较的,并且可序列化。
Map对象实现了collections.abc.Mapping抽象基类,因此使用它与使用Python字典非常相似
import immutables
map = immutables.Map(a=1, b=2)
print(map['a'])
# will print '1'
print(map.get('z', 100))
# will print '100'
print('z' in map)
# will print 'False'
由于Map是不可变的,因此存在一个特殊的API用于突变,允许对Map对象应用更改并创建新的(派生)Map
map2 = map.set('a', 10)
print(map, map2)
# will print:
# <immutables.Map({'a': 1, 'b': 2})>
# <immutables.Map({'a': 10, 'b': 2})>
map3 = map2.delete('b')
print(map, map2, map3)
# will print:
# <immutables.Map({'a': 1, 'b': 2})>
# <immutables.Map({'a': 10, 'b': 2})>
# <immutables.Map({'a': 10})>
Map还实现了批量更新的API:MapMutation对象
map_mutation = map.mutate()
map_mutation['a'] = 100
del map_mutation['b']
map_mutation.set('y', 'y')
map2 = map_mutation.finish()
print(map, map2)
# will print:
# <immutables.Map({'a': 1, 'b': 2})>
# <immutables.Map({'a': 100, 'y': 'y'})>
MapMutation对象是上下文管理器。以下是将上述示例重写为更自然方式的示例
with map.mutate() as mm:
mm['a'] = 100
del mm['b']
mm.set('y', 'y')
map2 = mm.finish()
print(map, map2)
# will print:
# <immutables.Map({'a': 1, 'b': 2})>
# <immutables.Map({'a': 100, 'y': 'y'})>
进一步开发
Python set类型的不可变版本,具有高效的add()和discard()操作。
许可证
Apache 2.0
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
immutables-0.20.tar.gz (88.9 kB 查看哈希)
构建分布
immutables-0.20-cp312-cp312-win32.whl (30.7 kB 查看哈希)
immutables-0.20-cp311-cp311-win32.whl (30.3 kB 查看哈希值)
immutables-0.20-cp310-cp310-win32.whl (30.3 kB 查看哈希)
immutables-0.20-cp39-cp39-win_amd64.whl (33.7 kB 查看哈希值)
immutables-0.20-cp39-cp39-win32.whl (30.3 kB 查看哈希值)
immutables-0.20-cp38-cp38-win_amd64.whl (33.7 kB 查看哈希值)
immutables-0.20-cp38-cp38-win32.whl (30.3 kB 查看哈希值)
关闭
immutables-0.20.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1d2f83e6a6a8455466cd97b9a90e2b4f7864648616dfa6b19d18f49badac3876 |
|
MD5 | 34b027e8f17f66770f14f35abb260efc |
|
BLAKE2b-256 | 7d6327f038a28ff2110bc04908a047817fd316d5a16ae06d0d3707732dee8013 |
关闭
immutables-0.20-cp312-cp312-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a82afc3945e9ceb9bcd416dc4ed9b72f92760c42787e26de50610a8b81d48120 |
|
MD5 | c7439117955db51ca6e4ecf01d682f40 |
|
BLAKE2b-256 | d02d5757ef242054389f4613ab269988cf2194dc3310ead7eaa023e3cea399b4 |
关闭
immutables-0.20-cp312-cp312-win32.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 525fb361bd7edc8a891633928d549713af8090c79c25af5cc06eb90b48cb3c64 |
|
MD5 | a3be7118c8d4c7b46639d79558e36839 |
|
BLAKE2b-256 | 5d86989b6180225698cd3ec9d58b704275d0c26ebeb6c9b8d7aac0c1af0385e0 |
关闭
哈希值 用于 immutables-0.20-cp312-cp312-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e8e82754f72823085643a2c0e6a4c489b806613e94af205825fa81df2ba147a0 |
|
MD5 | ea91252e5c8edd60e72019aeb5a9ac6f |
|
BLAKE2b-256 | a6010710b57a4a99ca027fda85c03a30b2c2301e6fadb930e1ebb1af2535b7ea |
关闭
哈希值 用于 immutables-0.20-cp312-cp312-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a606410b2ccb6ae339c3f26cccc9a92bcb16dc06f935d51edfd8ca68cf687e50 |
|
MD5 | 31f07cf583dce3f2527828f194c2e407 |
|
BLAKE2b-256 | 5b2b79d09d813eba6637086025061da7973d2169ba63fb5ce1d394293690fa3c |
关闭
哈希值 用于 immutables-0.20-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1009a4e00e2e69a9b40c2f1272795f5a06ad72c9bf4638594d518e9cbd7a721a |
|
MD5 | 7e5ca7bc3b3fb82f7bbfc59eaf78ffce |
|
BLAKE2b-256 | e24dfe7494e9923255a0fd5a72d7dabf4d8e2c6c321544c706bb7cd2dcfcf9e5 |
关闭
哈希值 用于 immutables-0.20-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 96899994842c37cf4b9d6d2bedf685aae7810bd73f1538f8cba5426e2d65cb85 |
|
MD5 | 5fe1aa7e1ac27141470bed374656dea0 |
|
BLAKE2b-256 | 18529d6b8ac41e86a8fe812625cf281ab68512987fbaa56b8264e6882f064b6e |
关闭
哈希值 用于 immutables-0.20-cp312-cp312-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5a88adf1dcc9d8ab07dba5e74deefcd5b5e38bc677815cbf9365dc43b69f1f08 |
|
MD5 | 8988be2ef298aade81e94696eb94c33d |
|
BLAKE2b-256 | 6edcb71a62acf8f936a004a9f20785fa88c7c68cb618e6bc207fca57f2677802 |
关闭
哈希值 用于 immutables-0.20-cp312-cp312-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4ba726b7a3a696b9d4b122fa2c956bc68e866f3df1b92765060c88c64410ff82 |
|
MD5 | 8188f743bc77c4920d01519ae6184a6e |
|
BLAKE2b-256 | 831f5ef21dac6bde0a45e9b5cb1787e5d215dc08ca83d5b66366b06a2497fd47 |
关闭
哈希值 用于 immutables-0.20-cp311-cp311-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f063f53b5c0e8f541ae381f1d828f3d05bbed766a2d6c817f9218b8b37a4cb66 |
|
MD5 | c3fac66d8853c4665260411cc72cd999 |
|
BLAKE2b-256 | 20c3d2dd0bd8ee438abebc8452b4689a33ae3c499e11d41dc2c1038e61b4bc03 |
关闭
哈希值 用于 immutables-0.20-cp311-cp311-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 085ac48ee3eef7baf070f181cae574489bbf65930a83ec5bbd65c9940d625db3 |
|
MD5 | facfbfc78a5497d1aac6be34cbf3c8f1 |
|
BLAKE2b-256 | 6f5434144b7a02e668c8499a98343fcbb25100e7bb7edc62d6a78ec93b4fe78d |
关闭
哈希值 用于 immutables-0.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b51aec54b571ae466113509d4dc79a2808dc2ae9263b71fd6b37778cb49eb292 |
|
MD5 | 62dc5abc08a8c1dd42f1b698f4c62bbd |
|
BLAKE2b-256 | 337c0a97873fe73fb4116cdab150ba3a68d7ceb6ef0359c0ca6fa1892cf312cf |
关闭
哈希值 用于 immutables-0.20-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 47f56aea56e597ecf6631f24a4e26007b6a5f4fe30278b96eb90bc1f60506164 |
|
MD5 | bd74f2a8868b890b739164a8f0f28ace |
|
BLAKE2b-256 | 85609eacefad6105a4648ec2ffbbbd9148537e01f94649c42726afe5e871eaf2 |
关闭
哈希值 用于 immutables-0.20-cp311-cp311-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5302ce9c7827f8300f3dc34a695abb71e4a32bab09e65e5ad6e454785383347f |
|
MD5 | a311cc7d6e23182804f1233393102a9e |
|
BLAKE2b-256 | d28698cefed4d82d4e493cea138c069bc9527ce61d3983338decb6c795c101a8 |
关闭
哈希值 用于 immutables-0.20-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 532be32c7a25dae6cade28825c76d3004cf4d166a0bfacf04bda16056d59ba26 |
|
MD5 | 014851de6a452562cddeb79441ce15af |
|
BLAKE2b-256 | bc7548a9ca4f0d3886ef12d2b6fb7ffa99cef01a8f328021f65ac6f2aa137e5d |
关闭
哈希值 用于 immutables-0.20-cp310-cp310-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2bcea81e7516bd823b4ed16f4f794531097888675be13e833b1cc946370d5237 |
|
MD5 | 00851f5a4eaf483961fec884f71461c9 |
|
BLAKE2b-256 | bb234ef0113ed4073f9165ad94b7438acaf92483122fe29036abb9d9572c8921 |
关闭
哈希值 用于 immutables-0.20-cp310-cp310-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2761e3dc2a6406943ce77b3505e9b3c1187846de65d7247548dc7edaa202fcba |
|
MD5 | 4bd76b332be4c1d834727670e206f80e |
|
BLAKE2b-256 | e0980bd8707c55af233411d2520142e6a78614ad1d4eadf401af15b30897b08e |
关闭
哈希值 用于 immutables-0.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 393dde58ffd6b4c089ffdf4cef5fe73dad37ce4681acffade5f5d5935ec23c93 |
|
MD5 | a1478f796cbdd6336359a20f6e15e97a |
|
BLAKE2b-256 | d3176a7c5db9f3c379be5ffe5e87889834e146c31b28aafa2104706598ac7f97 |
关闭
哈希值 用于 immutables-0.20-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c1214b5a175df783662b7de94b4a82db55cc0ee206dd072fa9e279fb8895d8df |
|
MD5 | f6d9ff1ce1418009a04a49cec26b1ca4 |
|
BLAKE2b-256 | bcc60210b0065ee4a11afd666c46ca4ec56ce6621e8274d977502cef418ab6da |
关闭
哈希值 用于 immutables-0.20-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2dd0dcef2f8d4523d34dbe1d2b7804b3d2a51fddbd104aad13f506a838a2ea15 |
|
MD5 | b241361282a0f063fccd10cdec751d88 |
|
BLAKE2b-256 | 38f3908fb5011a2ea28892d993400502960450c0c0c8ff4f118db5a5960d1aa9 |
关闭
哈希值 用于 immutables-0.20-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dea0ae4d7f31b145c18c16badeebc2f039d09411be4a8febb86e1244cf7f1ce0 |
|
MD5 | 48248e03f6cbca3ec27d8462befc4357 |
|
BLAKE2b-256 | 6044a91a2e31d50e39988667facecaad59367782db4dd39eea921732e015cc8b |
关闭
哈希值 用于 immutables-0.20-cp39-cp39-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cc51a01a64a6d2cd7db210a49ad010c2ac2e9e026745f23fd31e0784096dcfff |
|
MD5 | 032ccd16123bbcca80126202657c102e |
|
BLAKE2b-256 | 6d70456632d20330a8468cd1f1f21360996b30f6c2b2c9a5fdf63f662a5e4c56 |
关闭
哈希值 用于 immutables-0.20-cp39-cp39-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e3a5462f6d3549bbf7d02ce929fb0cb6df9539445f0589105de4e8b99b906e69 |
|
MD5 | 5f1dc64f41adbbd84fb6fa8d7191ce8e |
|
BLAKE2b-256 | bc82d32acce732cfff45ea54bf2fee34c46e0ff2bd2d0d6fd451e6e1d1d84a96 |
关闭
哈希值 用于 immutables-0.20-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 85dd9765b068f7beb297553fddfcf7f904bd58a184c520830a106a58f0c9bfb4 |
|
MD5 | d31c364bd881487759991299bc2158cb |
|
BLAKE2b-256 | bdd3d6b8f055a762875a5a8c0f41a435c087377adfc775b56fcf0f1964b74a58 |
关闭
哈希值 用于 immutables-0.20-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f349a7e0327b92dcefb863e49ace086f2f26e6689a4e022c98720c6e9696e763 |
|
MD5 | b07c2f083a2907fb5d64ca863625ea27 |
|
BLAKE2b-256 | da403d5528e2517acab832ab68008eef761f3eb904bee198cf78a0a79d259dad |
关闭
哈希值 用于 immutables-0.20-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d6449186ea91b7c17ec8e7bd9bf059858298b1db5c053f5d27de8eba077578ce |
|
MD5 | 61c7367af58c434337913c298ec60f67 |
|
BLAKE2b-256 | 34914274108e30a756768cbf42ee7f23af4f16b240aa8cb49ec36ca8cee5deae |
关闭
哈希值 用于 immutables-0.20-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d4f78cb748261f852953620ed991de74972446fd484ec69377a41e2f1a1beb75 |
|
MD5 | 5fa9894f6d0cf1d16d7b5cdde6ff1f22 |
|
BLAKE2b-256 | 7b80c7fe9825ec1f0f15fd77774c5233e098d5eeb95dc4a55d1505e39ae71d50 |
关闭
哈希值 用于 immutables-0.20-cp38-cp38-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fc739fc07cff5df2e4f31addbd48660b5ac0da56e9f719f8bb45da8ddd632c63 |
|
MD5 | 82d46bb59adfae797e2423db8b14c299 |
|
BLAKE2b-256 | 7a4a409a3cdf0bc5ad4e4737045bda5d40e653424fac67b6e096da769b2f45ec |
关闭
哈希值 用于 immutables-0.20-cp38-cp38-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e771198edc11a9e02ffa693911b3918c6cde0b64ad2e6672b076dbe005557ad8 |
|
MD5 | effd0373b4883e7caffa637aed8e7563 |
|
BLAKE2b-256 | 3d42805d37fb45a8e65cf05f855be1bca4dd132cb1d6a99dc3bc6c8cdbbca3ca |
关闭
哈希值 用于 immutables-0.20-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 62f8a7a22939278127b7a206d05679b268b9cf665437125625348e902617cbad |
|
MD5 | 66ef89eb4fb5348c0687ea7fda54a4f2 |
|
BLAKE2b-256 | 7c89f7f5ad4ba752b92aabc2d8b0e82229c921e8d4e2f855f7deb5a084c1681a |
关闭
哈希值 用于 immutables-0.20-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ac86f4372f4cfaa00206c12472fd3a78753092279e0552b7e1880944d71b04fe |
|
MD5 | b3f69ea669d23919c75973708769dc4c |
|
BLAKE2b-256 | 7ffd8852a78ad34da8c6e1990173f96e5208a9f25a509ec2a4995cb0a8a68ca9 |
关闭
哈希值 用于 immutables-0.20-cp38-cp38-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 65954eb861c61af48debb1507518d45ae7d594b4fba7282785a70b48c5f51f9b |
|
MD5 | 58e0d278819a4bc2e5defa4a557edd95 |
|
BLAKE2b-256 | 9ddac0f9bad6acc5a9d99bbddb522efb4c18412c718f64843d759f796fd2491f |
关闭
哈希值 用于 immutables-0.20-cp38-cp38-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f17f25f21e82a1c349a61191cfb13e442a348b880b74cb01b00e0d1e848b63f4 |
|
MD5 | 49f12ae7528cc635111358f580c8657e |
|
BLAKE2b-256 | d01585116402b756f2552973580d6d0acb1e52dcc71173f444e164ba673fd600 |