跳转到主要内容

将字典值作为属性访问(递归工作)。

项目描述

https://img.shields.io/pypi/v/easydict.svg https://img.shields.io/pypi/dm/easydict.svg

Easydict

EasyDict 允许像访问属性一样访问字典值(递归工作)。为 Python 字典提供类似 JavaScript 的点表示法。

安装

pip install easydict

用法

>>> from easydict import EasyDict as edict
>>> d = edict({'foo':3, 'bar':{'x':1, 'y':2}})
>>> d.foo
3
>>> d.bar.x
1

>>> d = edict(foo=3)
>>> d.foo
3

当解析 JSON 内容时非常有用!

>>> from easydict import EasyDict as edict
>>> from simplejson import loads
>>> j = """{
"Buffer": 12,
"List1": [
    {"type" : "point", "coordinates" : [100.1,54.9] },
    {"type" : "point", "coordinates" : [109.4,65.1] },
    {"type" : "point", "coordinates" : [115.2,80.2] },
    {"type" : "point", "coordinates" : [150.9,97.8] }
]
}"""
>>> d = edict(loads(j))
>>> d.Buffer
12
>>> d.List1[0].coordinates[1]
54.9

设置属性与获取属性一样简单

>>> d = EasyDict()
>>> d.foo = 3
>>> d.foo
3

它仍然是一个 dict

>>> d = EasyDict(log=False)
>>> d.debug = True
>>> d.items()
[('debug', True), ('log', False)]

实例和类属性像普通对象一样访问...

>>> class Flower(EasyDict):
...     power = 1
...
>>> f = Flower({'height': 12})
>>> f.power
1
>>> f['power']
1

许可证

  • Lesser GNU 公共许可证

作者

makinacom

类似工具

  • TreeDict,一个快速且功能齐全的类似字典的树容器。

  • addict

变更日志

1.12 (2024-03-04)

  • 修复 #46:修复 .pop() 的可选默认值处理 (#47)

1.12 (2024-02-13)

  • 修复 #22:不要将元组属性转换为列表 (#44)

1.11 (2023-10-24)

  • 修复 #39:类成员中的 dict 导致 RecursionError (#41)

  • README 中的一些小改动

1.10 (2022-09-28)

  • 使测试与 python2 和 python3 兼容(感谢 @JackLangerman)

  • Dictify 输入

  • 修复许可证元数据

1.9 (2018-10-18)

  • 修复 issue #3,现在更新和 pop 在 EasyDict 上工作正常。

1.8 (2018-08-17)

  • 更新包分类器。

1.7 (2017-04-27)

  • 防止在赋值时复制子 EasyDict 以修复反序列化 (#7,感谢 @Chronos-Sk)

1.6 (2015-01-27)

  • 允许通过设置项目设置属性(感谢 phivos)

1.5 (2014-08-07)

  • 允许使用 self 而不是类名进行子类化(感谢 Steve Engledow)

1.4 (2011-03-13)

  • 像实例属性一样访问类属性

1.3 (2012-02-08)

  • 更好的文档和测试

1.2 (2011-06-08)

  • 修复包含 README 的错误

1.1 (2012-04-21)

  • 切换到 distutils2

1.0 (2011-04-18)

  • 初始工作版本

由以下支持