Python 中的链接深度字典。
项目描述
LinkedDeepDict
一个轻量级 Python 库,用于管理具有父子关系的嵌套字典。除了作为内置dict
类的兼容插入式替代品之外,自我复制的默认工厂使复杂嵌套布局的创建变得轻松。
文档
单击此处阅读文档。
安装
这是可选的,但我们建议您始终创建一个专用的虚拟环境,以避免与您的其他项目发生冲突。创建一个文件夹,在该文件夹中打开一个命令外壳并使用以下命令
>>> python -m venv venv_name
创建环境后,通过键入激活它
>>> .\venv_name\Scripts\activate
可以使用pip
Python >= 3.7 从 PyPI 安装该库(在虚拟环境中或全局中):
>>> pip install ldd
词典词典...
在您想使用 a 的每种情况下dict
,您都可以使用 aLinkedDeepDict
作为替代品,但除了简单字典提供的功能之外, aLinkedDeepDict
功能更强大,因为它提供了一种处理嵌套布局的机制。它基本上是一个defaultdict
带有自我复制默认工厂的订单。
>>> from ldd import LinkedDeepDict
>>> data = LinkedDeepDict()
ALinkedDeepDict
本质上是一个嵌套的默认字典。嵌套是指您可以这样做:
>>> data['a']['b']['c']['e'] = 1
>>> data['a']['b']['d'] = 2
请注意,该对象会一直到最后一个键,而无需显式创建每个级别。发生的情况是,每次 a 中缺少键时data
,对象都会创建一个新实例,然后该实例也准备好处理丢失的键或数据。访问嵌套子字典的工作方式类似:
>>> data['a']['b']['c']['e']
1
为了给人一种更 Pythonic 的感觉,它还支持类似数组的索引,因此以下操作是有效的:
>>> data['a', 'b', 'c', 'e'] = 3
>>> data['a', 'b', 'c', 'e']
3
当然,这是我们可以在一行中使用纯 Python 轻松复制的东西,而不需要花哨的东西:
>>> data = {'a' : {'b' : {'c' : {'e' : 3}, 'd' : 2}}}
关键是我们循环一个纯dict
实例,我们得到
>>> [k for k in data.keys()]
['a']
但是,如果我们在访问字典的键、值或项时使用LinkedDeepDict
类和选项,则会发生以下情况:deep=True
>>> [k for k in LinkedDeepDict(data).keys(deep=True)]
['e', 'd']
我们可以看到,在这种情况下,迭代会遍历键,这些键实际上会保留一些数据,并且不会返回容器本身。如果我们对这些值进行相同的实验,它表明LinkedDeepDict
唯一返回数据树的叶子并且行为根本不同:
>>> [k for k in data.values()]
[{'b': {'c': {'e': 3}, 'd': 2}}]
>>> [k for k in LinkedDeepDict(data).values(deep=True)]
[3, 2]
重要的是,调用obj.values(deep=True)
仍然返回一个生成器对象,这使得它在循环大型数据集时内存高效。
>>> LinkedDeepDict(data).values(deep=True)
<generator object OrderedDefaultDict.values at 0x0000028F209D54A0>
测试
要运行所有测试,请在项目的根目录中打开控制台并键入以下内容
>>> python -m unittest
依赖项
唯一的依赖是six
, 以提供主要 Python 版本 2 和 3 之间的基本连续性。
执照
该软件包在 MIT 许可下获得许可。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
linkeddeepdict -0.0.1b0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f631989c95266865e1fddb1b5e138c4e2a2a7c1737a9bec61ba7d74fd2b54bea |
|
MD5 | 7dc026b30231f3278adf895483fa31ff |
|
布莱克2-256 | 2e82a572c7e6f2358559f2ef6e2077b1892871a3c5a7dfc0ca2dd4f054cb362a |
linkeddeepdict -0.0.1b0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0028d6bc669a3c54264c1229f46411f7232918691fe933392b441318afd4b4a4 |
|
MD5 | 12d4fefa51dda26f8a3b67584d72453a |
|
布莱克2-256 | f0d87659272b28bb585356bab4d56404dd446dc45207ba941e14f6d3d79df6b7 |