python addict的基本用法示例详解

 更新时间:2026年02月26日 09:21:10   作者:徐同保  
addict 是一个流行的 Python 第三方库,主要用来让你像访问属性一样访问字典里的数据(即点操作符访问属性,而不是方括号),从而使字典操作更方便和美观,这篇文章给大家介绍python addict的用法,感兴趣的朋友跟随小编一起看看吧

addict 是一个流行的 Python 第三方库,主要用来让你像访问属性一样访问字典里的数据(即点操作符访问属性,而不是方括号),从而使字典操作更方便和美观。常用的核心类为Dict

基本用法

安装 addict

pip install addict

基本示例

from addict import Dict
data = Dict()
data.name = "Tom"   # 直接赋值属性
data.age = 21
print(data)         # {'name': 'Tom', 'age': 21}
print(data.name)    # 'Tom'
print(data['name']) # 也可以字典方式访问

嵌套赋值

Addict 最大的特色是可以“自动递归嵌套”,即你可以直接给嵌套的属性赋值,无需事先初始化嵌套字典。

from addict import Dict
data = Dict()
data.user.info.name = "Alice"
data.user.info.age = 22
print(data)   # {'user': {'info': {'name': 'Alice', 'age': 22}}}
print(data.user.info.name)  # 'Alice'

像正常字典一样赋值

data = Dict({'a': 1, 'b': {'c': 2}})
data.b.c          # 2
data['b']['c']    # 2
data.b.c = 3
print(data['b']['c'])  # 3

兼容字典的方法

Addict 的对象可以与内建字典的方法通用:

data.keys()
data.items()
del data.name

删除属性

del data.user.info.name
# 或者 del data['user']['info']['name']

转回普通 dict

normal_dict = data.to_dict()

支持序列化

addict 支持和 json 模块互操作

import json
from addict import Dict
d = Dict(user="Anna")
json_str = json.dumps(d)
print(json_str)  # {"user": "Anna"}

典型应用场景

  • 处理嵌套字典结构(如 json 配置、返回数据等)
  • 代码更加易读、书写直观
  • 需要动态添加嵌套结构的情况

注意事项

  • addict 的访问方式虽然好用,但不适合严格字典类型约束场景(比如序列化到不支持对象访问的外部接口)。
  • 自动嵌套特性可能会不小心创建未预料的嵌套键,请注意合理使用。

参考文档

如需进阶用法举例,欢迎提出!

补充:Python库addict,使用Dict 的类

Python库addict,使用Dict 的类

from addict import Dict 这行代码导入了 Dict 类,它来自于 addict 模块。在这个上下文中,addict 是一个 Python 库,它提供了一个名为 Dict 的类,用于创建可通过属性访问的字典对象。

使用 addict 中的 Dict 类可以方便地创建字典对象,并且可以像访问对象属性一样访问字典的键值对,这在某些情况下可能会比传统的字典访问方式更加清晰和方便。

传统字典进行访问:

# 创建一个嵌套字典
nested_dict = {
    'person': {
        'name': 'Alice',
        'age': 30,
        'address': {
            'city': 'New York',
            'zip': '10001'
        }
    }
}
# 访问字典的键值对,使用传统的字典访问方式
print(nested_dict['person']['name'])  # 输出: Alice
print(nested_dict['person']['age'])   # 输出: 30
print(nested_dict['person']['address']['city'])  # 输出: New York
print(nested_dict['person']['address']['zip'])   # 输出: 10001
# 添加新的键值对
nested_dict['person']['job'] = 'Engineer'
# 输出更新后的字典
print(nested_dict['person']['job'])  # 输出: Engineer

使用Dict类进行访问:

from addict import Dict
	# 创建一个嵌套字典
	nested_dict = {
	    'person': {
	        'name': 'Alice',
	        'age': 30,
	        'address': {
	            'city': 'New York',
	            'zip': '10001'
	        }
	    }
	}
	# 使用 Dict 类创建一个可通过属性访问的字典对象
	addict_dict = Dict(nested_dict)
	# 访问字典的键值对,就像访问对象属性一样
	print(addict_dict.person.name)  # 输出: Alice
	print(addict_dict.person.age)   # 输出: 30
	print(addict_dict.person.address.city)  # 输出: New York
	print(addict_dict.person.address.zip)   # 输出: 10001
	# 添加新的键值对
	addict_dict.person.job = 'Engineer'
	# 输出更新后的字典
	print(addict_dict.person.job)  # 输出: Engineer

总结

使用 addict 库中的 Dict 类时,可以像访问对象属性一样访问字典的键值对。这在访问深层嵌套的字典时尤其方便。
他只是编写代码的时候比传统字典访问要方便一些,其他的没有区别。

到此这篇关于python addict的用法的文章就介绍到这了,更多相关python addict用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python内置函数bin()适应场景分析

    Python内置函数bin()适应场景分析

    bin()是处理二进制数据的基础工具,适用于位操作、数据编码及算法优化等场景,其简洁的语法和高效性使其成为Python编程中的常用函数,但需注意类型限制和负数表示规则,这篇文章主要介绍了Python内置函数---bin(),需要的朋友可以参考下
    2025-04-04
  • Python 实现Serial 与STM32J进行串口通讯

    Python 实现Serial 与STM32J进行串口通讯

    今天小编就为大家分享一篇Python 实现Serial 与STM32J进行串口通讯,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 详解Windows下PyCharm安装Numpy包及无法安装问题解决方案

    详解Windows下PyCharm安装Numpy包及无法安装问题解决方案

    这篇文章主要介绍了详解Windows下PyCharm安装Numpy包及无法安装问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Python实现任意文件查找工具的不同方法详解

    Python实现任意文件查找工具的不同方法详解

    在日常的开发和运维工作中,经常需要查找特定类型的文件或带有特定模式的文件,本文将提供两种不同的编写文件查找工具实现方式,需要的可以参考下
    2025-03-03
  • Windows系统下安装tensorflow的配置步骤

    Windows系统下安装tensorflow的配置步骤

    这篇文章主要介绍了Windows系统下安装tensorflow,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • python numpy中multiply与*及matul 的区别说明

    python numpy中multiply与*及matul 的区别说明

    这篇文章主要介绍了python numpy中multiply与*及matul 的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Pandas数据类型自行变换及数据类型转换失败问题分析与解决

    Pandas数据类型自行变换及数据类型转换失败问题分析与解决

    这篇文章主要介绍了Pandas数据类型自行变换及数据类型转换失败问题分析与解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Python中列表遍历使用range和enumerate的区别讲解

    Python中列表遍历使用range和enumerate的区别讲解

    这篇文章主要介绍了Python中列表遍历使用range和enumerate的区别,在Python编程语言中,遍历list有range和enumerate方法,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Python中的if判断语句中包含or问题

    Python中的if判断语句中包含or问题

    这篇文章主要介绍了Python中的if判断语句中包含or问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Pycharm中Python环境配置常见问题解析

    Pycharm中Python环境配置常见问题解析

    这篇文章主要介绍了Pycharm中Python环境配置常见问题,结合图文形式分析了Pycharm中Python环境配置模块路径问题、虚拟环境创建、配置远程服务器、连接数据库等常见问题与操作方法,需要的朋友可以参考下
    2020-01-01

最新评论