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中的URLError异常的方法
Apr 30 Python
Python获取任意xml节点值的方法
May 05 Python
深入讲解Python中面向对象编程的相关知识
May 25 Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
Django Rest framework之权限的实现示例
Dec 17 Python
python实现的读取网页并分词功能示例
Oct 29 Python
python绘制雪景图
Dec 16 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
一些使用频率比较高的php函数
2008/10/03 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
理解Javascript_10_对象模型
2010/10/16 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
Python实现拼接多张图片的方法
2014/12/01 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
python处理数据,存进hive表的方法
2018/07/04 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
python初步实现word2vec操作
2020/06/09 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
COSETTE官网:奢华,每天
2020/03/22 全球购物
资深地理教师自我评价
2013/09/21 职场文书
奖学金自我鉴定范文
2013/10/03 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
城管综合整治方案
2014/05/01 职场文书
电教室标语
2014/06/20 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
工资收入证明
2014/10/07 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
关于Python中进度条的六个实用技巧分享
2022/04/05 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis