Multidict 是一个类似于 dict 的键值对集合,其中同一个键可能会在容器中出现多次。
HTTP 头部 和 URL 查询字符串 需要特定的数据结构:
multidict。它的行为大致与常规的 dict 相同,但它可以为同一个
键 拥有多个 值,并且保留插入顺序。
该键 为 str(或大小写不敏感字典的 istr)。
multidict 有四种 multidict 类:
MultiDict、MultiDictProxy、CIMultiDict
和 CIMultiDictProxy。
不可变的代理(MultiDictProxy 和
CIMultiDictProxy)提供了一个对被代理 multidict 的动态视图,该视图反映了底层集合的变化。它们实现了
collections.abc.Mapping 接口。
常规的可变(MultiDict 和 CIMultiDict)类
实现了 collections.abc.MutableMapping,并允许它们更改自身的内容。
大小写不敏感(CIMultiDict 和
CIMultiDictProxy)假定键是大小写不敏感的,例如:
>>> dct = CIMultiDict(key='val') >>> 'Key' in dct True >>> dct['Key'] 'val'
键应为 str 或 istr 实例。
该库有可选的 C 扩展以提高速度。
Apache 2
$ pip install multidict该库仅支持 Python 3!
PyPI 包含 Linux、Windows 和 MacOS 的二进制轮子。如果您想在其他操作系统(或 Docker 中的Alpine Linux)上安装
multidict,将使用 tarball 从源代码编译该库。这需要安装 C 编译器和 Python 头文件。
要跳过编译,请使用 MULTIDICT_NO_EXTENSIONS 环境变量,例如:
$ MULTIDICT_NO_EXTENSIONS=1 pip install multidict请注意,纯 Python(未编译)版本根据使用场景会慢 20-50 倍!
对于扩展开发,请设置 MULTIDICT_DEBUG_BUILD 环境变量以在调试模式下编译扩展:
$ MULTIDICT_DEBUG_BUILD=1 pip install multidict请参阅 RTD 页面。