开启掘金成长之旅!这是我参与「掘金日新计划 · 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还有需要特性扩展;因为是开源姓名,大疆可以参考一下它的官方文档;