Skip to main content

只是一个扩展的 Python 字典,具有属性可访问性、额外的方法和元数据

项目描述

lxdx是一个“扩展”的 Python字典,具有类似属性的可访问性。除了通常的dict操作、函数和方法之外,还包含了一些有用的函数。

由于对dict使用联合运算符,因此仅支持 Python 3.9+ 。

为什么要做这个项目?

  • 爱好和好奇心。只是为了编程的乐趣。

  • 数据类不用于建模分层数据。

  • 访问多层数据时的括号太多。点表示法可能是一种更清洁的方式。

  • 引入受 JsonPath启发的get_from (path)等实用函数,以实现可编程性。

  • 能够向项目添加元数据。

安装

lxdxPyPI中可用,并且可以通过pip安装:

pip install lxdx

例子

from lxdx import Dixt

assert Dixt() == {}
assert Dixt({1: 1, 'alpha': 'α'}) == {1: 1, 'alpha': 'α'}
assert Dixt(alpha='α', beta='β') == {'alpha': 'α', 'beta': 'β'}
assert Dixt(alpha='α', beta='β').is_supermap_of({'beta': 'β'})

# data can be deeply nested
data = {'Accept-Encoding': 'gzip', 'metadata': {'Content-Type': 'application/json'}}
dx = Dixt(**data)

# update dx using the union operator
dx |= {'other': 'dict or Dixt obj'}

# 'Normalise' the keys to use it as attributes additionally.
assert dx['Accept-Encoding'] == dx.accept_encoding
del dx.accept_encoding
print(dx.metadata.CONTENT_TYPE)

# Instead of
dx['a-list'][1]['obj-attr'] = 'value'

# Is way cleaner
dx.a_list[1].obj_attr = 'value'

# Programmatically get values
assert dx.a_list[1].obj_attr == dx.get_from('$.a_list[1].obj_attr')

json_str = '{"a": "JSON string"}'
assert Dixt.from_json(json_str).json() == json_str

文档

完整文档位于https://hardistones.github.io/lxdx

未来

lxdx应该是“扩展”列表dict的库。目前还没有列表扩展的用例。

得到支持

  • 用户定义的元规范。

执照

该项目及其所有文件均根据 3-Clause BSD 许可证获得许可。

版权所有 (c) 2021,@github.com/hardistones 保留所有权利。

如果满足以下条件,则允许以源代码和二进制形式重新分发和使用,无论是否经过修改:

  1. 源代码的再分发必须保留上述版权声明、此条件列表和以下免责声明。

  2. 二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表和以下免责声明。

  3. 未经事先明确的书面许可,不得使用版权所有者的姓名或其贡献者的姓名来认可或推广源自本软件的产品。

本软件由版权所有者和贡献者“按原样”提供,并且不提供任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的暗示保证。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于采购替代商品或服务;使用、数据或利润损失;或业务中断),无论是由何种责任理论引起的,无论是在合同、严格责任或侵权行为(包括疏忽或其他方式)中以任何方式使用本软件引起的,即使已被告知存在此类损害的可能性。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

lxdx-0.4.0.tar.gz (10.5 kB 查看哈希

已上传 source

内置分布

lxdx-0.4.0-py3-none-any.whl (10.5 kB 查看哈希

已上传 py3