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 相关文章推荐
Python 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
Python使用函数默认值实现函数静态变量的方法
Aug 18 Python
Python中暂存上传图片的方法
Feb 18 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
Python实现的求解最大公约数算法示例
May 03 Python
python 整数越界问题详解
Jun 27 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
使用 pytorch 创建神经网络拟合sin函数的实现
Feb 24 Python
重构Python代码的六个实例
Nov 25 Python
Python第三方库安装缓慢的解决方法
Feb 06 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
Feb 22 Python
python实现监听键盘
Apr 26 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
分享一下贝贝成长进度的php代码
2012/09/14 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
简单实现PHP留言板功能
2016/12/21 PHP
PHP实现验证码校验功能
2017/11/16 PHP
jquery 3D球状导航的文章分类
2010/07/06 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
python 实现堆排序算法代码
2012/06/05 Python
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
python输出指定月份日历的方法
2015/04/23 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
tornado+celery的简单使用详解
2019/12/21 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
python实现三壶谜题的示例详解
2020/11/02 Python
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
家长通知书家长意见
2014/12/30 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
python3 字符串str和bytes相互转换
2022/03/23 Python