python使用参数对嵌套字典进行取值的方法


Posted in Python onApril 26, 2019

因一些特殊需求需要以参数的形式获取字典中特定的值,网上搜了一下并没有特别好的实现(并没有太认真去找~),所以自己实现了一个,以供大家参考:) 。

话不多说,直接上代码:

def dict_get(dic, locators, default=None):

 '''

 :param dic: 输入需要在其中取值的原始字典 <dict>
 :param locators: 输入取值定位器, 如:['result', 'msg', '-1', 'status'] <list>
 :param default: 进行取值中报错时所返回的默认值 (default: None)
 :return: 返回根据参数locators找出的值

 '''

 if not isinstance(dic, dict) or not isinstance(locators, list):
  return default

 value = None

 for locator in locators:
  if not type(value) in [dict, list] and isinstance(locator, str) and not can_convert_to_int(locator):
  try:
   value = dic[locator]
  except KeyError:
   return default
  continue
  if isinstance(value, dict):
  try:
   value = dict_get(value, [locator])
  except KeyError:
   return default
  continue
  if isinstance(value, list) and can_convert_to_int(locator):
  try:
   value = value[int(locator)]
  except IndexError:
   return default
  continue

 return value

 def can_convert_to_int(input):
 try:
  int(input)
  return True
 except BaseException:
  return False

Best Practice

好的我们来进行一次简单的最佳实践:)

if __name__ == '__main__':
 dict_test = {"result": {"code": "110002", "msg": [{'status': 'ok'}, {'status': 'failed'}]}}
 result = dict_get(dict_test, ['result', 'msg', '-1', 'status'])
 print(result)

下面是控制台的输出,大家可以看到输出是符合预期结果的:)

failed

Process finished with exit code 0

这次分享到此为止~ 我们有缘再见:)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用cx_freeze把python打包exe示例
Jan 24 Python
Python中os和shutil模块实用方法集锦
May 13 Python
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
python实现搜索文本文件内容脚本
Jun 22 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
opencv-python 提取sift特征并匹配的实例
Dec 09 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
python实现飞船游戏的纵向移动
Apr 24 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
python将视频转换为全字符视频
Apr 26 #Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 #Python
Python3.5内置模块之random模块用法实例分析
Apr 26 #Python
python3.5安装python3-tk详解
Apr 26 #Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 #Python
python实现名片管理系统项目
Apr 26 #Python
python面向对象实现名片管理系统文件版
Apr 26 #Python
You might like
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
PHP实现的购物车类实例
2015/06/17 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
js 替换
2008/02/19 Javascript
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
python实现Decorator模式实例代码
2018/02/09 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
django教程如何自学
2020/07/31 Python
html5启动原生APP总结
2020/07/03 HTML / CSS
工作个人的自我评价
2014/01/14 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
护士年终个人总结
2015/02/13 职场文书
三八节祝酒词
2015/08/11 职场文书
教师教育心得体会
2016/01/19 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL