python知识点 - 让字典的使用更方便的库Box

347 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第26天,点击查看活动详情

字典是python中的重要数据类型,在python开发中经常使用;正常情况下,字典只能使用中括号的方式访问字典中的值; 使用库Box可以扩展字典的功能,使用点符号访问元素,而且还有其他更方便的扩展功能

其实字典内置了多个好用的功能函数,比如:

  • 清除字典 clear()
d = {"allow_share":True,"aweme_id":"7159488343024127262","in_reviewing":False,"private_status":0}
d.clear()
print(d)

  • 返回键值对 items()
d = {"allow_share":True,"aweme_id":"7159488343024127262","in_reviewing":False,"private_status":0}
items = d.items()
print(items)
print(list(items))

在这里插入图片描述

items()返回的是一个对象,需要使用list函数转换一下;

  • 获取字典的键列表 keys()
  • 获取字典的值列表values()

这两个一般不怎么使用,因为items()的功能更强

  • 删除一个键pop()
d = {"allow_share":True,"aweme_id":"7159488343024127262","in_reviewing":False,"private_status":0}
print(d.pop('allow_share'))
print(d)

在这里插入图片描述 在删除一个键时,如果存在,将返回他的值;如果不存在,会抛出异常;但是如果指定了可选参数,则返回这个值,不抛异常;

  • 删除键值对popitem()
d = {"allow_share":True,"aweme_id":"7159488343024127262","in_reviewing":False,"private_status":0}
d.popitem()
print(d)

在这里插入图片描述 先删除最后面的键值对,直到字典被删除完,抛出异常;

  • 获取指定键的值get()
d = {"allow_share":True,"aweme_id":"7159488343024127262","in_reviewing":False,"private_status":0}

print(d.get("allow_share"))
print(d["allow_share"])

使用get方式和使用中括号的方式是一样的;

使用box增强字典的使用

Box是第三方库,使用前需要安装;安装方式推荐使用pip;

使用pip方式安装:打开命令行窗口,执行命令

pip install python-box;

在这里插入图片描述

引入Box:

from box import Box

需要注意的是,安装的库名称和引入时的名称是不一样的;

使用Box: 生成一个box对象,可以传递字典参数; 生成box对象后,就可以使用点符号访问对象中的数据了; box同样支持中括号的方式访问;

from box import Box

d = {"allow_share":True,"aweme_id":"7159488343024127262","in_reviewing":False,"private_status":0}

n_box = Box(d)
print(n_box.allow_share)
print(n_box['allow_share'])

由于box是扩展了字典的功能,所以字典中有些默认方法名称和键值名称冲突时,无法使用点符号访问数据,可以使用中括号的方法;

导入导出功能

box对象能改轻松的导出为json、yaml csv等文件;还能接收这些类型的文件导入; 例如: 导出json:

from box import Box

d = {"allow_share":True,"aweme_id":"7159488343024127262","in_reviewing":False,"private_status":0}

n_box = Box(d)
n_box.to_json(filename='test_out.json')

导入json文件:

from box import Box
n_box = Box.from_json(filename='test.json')
print(n_box)

当然,box还有需要特性扩展;因为是开源姓名,大疆可以参考一下它的官方文档;