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 相关文章推荐
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
python多线程下信号处理程序示例
May 31 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
一行python实现树形结构的方法
Aug 09 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
python绘制规则网络图形实例
Dec 09 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 Python
Pytest中skip和skipif的具体使用方法
Jun 30 Python
Python爬虫 简单介绍一下Xpath及使用
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函数
2008/10/03 PHP
PHP 源代码压缩小工具
2009/12/22 PHP
PHP 图片文件上传实现代码
2010/12/29 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
angular分页指令操作
2017/01/09 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
python获取当前目录路径和上级路径的实例
2018/04/26 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
什么是抽象
2015/12/13 面试题
维修工先进事迹
2014/05/29 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
兴趣班停课通知
2015/04/24 职场文书
行政处罚告知书
2015/07/01 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
SQL Server实现分页方法介绍
2022/03/16 SQL Server