python工程助手开发 (1) python字典增强
2022/1/10 1:10:09
本文主要是介绍python工程助手开发 (1) python字典增强,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
因为常使用js内的字典,其类型提示与"."访问都比较方便,这里也为python增强其功能.
1.增加字典的"."操作符访问
实现思路.
网络上有一些简单的实现方式,但实际使用时存在一些问题,如在控制台内没有键的提示,数组内的字典没有得到增强等,我的实现方式没有这些问题.
- 继承dict类.
- 添加__setattr__方法.
- 递归字典数据进行__setattr__
如下为实现代码:
class DictPlus(dict): def __init__(self,dic): dict.__init__(self) for key,item in dic.items(): if key[0]!='_': if type(item)==dict: self.__setattr__(key,DictPlus(dict)) if type(item)==list: self.__setattr__(key,self.__iterlist__(item)) else: self.__setattr__(key,item) def __iterlist__(self,item): temp=[DictPlus(x) if type(x)==dict else x for x in item] temp=[self.__iterlist__(x) if type(x)==list else x for x in temp] return temp def __setattr__(self,key,item): dict.__setattr__(self,key,item) self.update(self.__dict__)
使用方式:
In[0] #初始化 In[1] data = {"user": "zhangsan", "age": 20, "father": {"name": "lisi", "age": 44}, "cars": [{"name": "bmw"}]} In[2] data_plus = DictPlus(data) In[3] #字典访问 data_plus.user data_plus["user"] data_plus.father.name data_plus.cars[0].name In[4] #字典值设置 data_plus.user="wangmazi" data_plus.mather={"name":"xiaohong"}
备注:按上面的实现思路,还可以修改字典getter与setter方法,实现各种hook操作
这篇关于python工程助手开发 (1) python字典增强的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门