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

 更新时间:2019年04月26日 15:06:33   作者:泰斯特test  
这篇文章主要介绍了python使用参数对嵌套字典进行取值,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

话不多说,直接上代码:

 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

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

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

相关文章

  • PyQt5实现下载进度条效果

    PyQt5实现下载进度条效果

    这篇文章主要为大家详细介绍了PyQt5实现下载进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python常用数据库接口sqlite3和MySQLdb学习指南

    Python常用数据库接口sqlite3和MySQLdb学习指南

    在本章节中,我们将学习 Python 中常用的数据库接口,包括 sqlite3用于SQLite数据库和MySQLdb用于 MySQL 数据库,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • python 操作hive pyhs2方式

    python 操作hive pyhs2方式

    今天小编就为大家分享一篇python 操作hive pyhs2方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python之django母板页面的使用

    python之django母板页面的使用

    这篇文章主要介绍了python之django母板页面的使用,母版页用于处理html页面相同部分内容,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • python让函数不返回结果的方法

    python让函数不返回结果的方法

    在本篇内容里小编给大家整理的是关于python让函数不返回结果的方法,有需要的朋友们可以参考下。
    2020-06-06
  • Pandas统计计数value_counts()的使用

    Pandas统计计数value_counts()的使用

    本文主要介绍了Pandas统计计数value_counts()的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Python异步爬虫实现原理与知识总结

    Python异步爬虫实现原理与知识总结

    之前有很多小伙伴想看Python异步爬虫的有关知识总结,这次它来了,文中有非常详细的代码示例与注释,即使对刚开始学python的小伙伴也很友好,,需要的朋友可以参考下
    2021-05-05
  • Collatz 序列、逗号代码、字符图网格实例

    Collatz 序列、逗号代码、字符图网格实例

    下面小编就为大家带来一篇Collatz 序列、逗号代码、字符图网格实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • python实现图片批量剪切示例

    python实现图片批量剪切示例

    这篇文章主要介绍了python实现图片批量剪切示例,需要的朋友可以参考下
    2014-03-03
  • 22个Python的万用公式分享

    22个Python的万用公式分享

    在大家的日常python程序的编写过程中,都会有自己解决某个问题的解决办法,或者是在程序的调试过程中,用来帮助调试的程序公式。小编通过几十万行代码的总结处理,总结出了22个python万用公式,可以帮助大家解决在日常的python编程中遇到的大多数问题,一起来看看吧
    2022-12-12

最新评论