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的Django框架中的模版相关知识
Jul 15 Python
python通过cookie模拟已登录状态的初步研究
Nov 09 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
tensorflow 限制显存大小的实现
Feb 03 Python
基于pycharm实现批量修改变量名
Jun 02 Python
Python3爬虫里关于代理的设置总结
Jul 30 Python
Python logging模块进行封装实现原理解析
Aug 07 Python
python飞机大战游戏实例讲解
Dec 04 Python
python实现视频压缩功能
Dec 18 Python
python中pycryto实现数据加密
Apr 29 Python
Python中tqdm的使用和例子
Sep 23 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
Linux编译升级php的详细方法
2013/11/04 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
python编写Logistic逻辑回归
2020/12/30 Python
python散点图实例之随机漫步
2018/08/27 Python
python实现梯度下降算法
2020/03/24 Python
用python生成1000个txt文件的方法
2018/10/25 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
python cookie反爬处理的实现
2020/11/01 Python
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
经济类毕业生求职信
2014/06/26 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
党的生日活动方案
2014/08/15 职场文书
农业项目建议书
2014/08/25 职场文书
社区义诊通知
2015/04/24 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
浅谈python中的多态
2021/06/15 Python
业余无线电通联Q语
2022/02/18 无线电