当前位置:主页 > python教程 > python使用参数对嵌套字典进行取值的方法

python使用参数对嵌套字典进行取值的实例操作

发布:2019-09-15 09:45:50 132


给网友朋友们带来一篇python取值相关的编程文章,网友阴贤淑根据主题投稿了本篇教程内容,涉及到python、嵌套字典取值、python使用参数对嵌套字典进行取值的方法相关内容,已被556网友关注,涉猎到的知识点内容可以在下方电子书获得。

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

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

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


参考资料

相关文章

  • 介绍Python生成随机数的几种方法

    发布:2020-03-12

    这篇文章主要介绍了Python简单生成随机数的方法,结合实例形式分析了Python基于random模块生成随机数的相关操作技巧,需要的朋友可以参考下


  • python用pdfplumber提取pdf表格数据并保存到excel文件中

    python用pdfplumber提取pdf表格数据并保存到excel文件中

    发布:2023-02-28

    给网友朋友们带来一篇关于python的教程,在实际研究中我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报、发行上市公告等,下面这篇文章主要给大家介绍了关于利用python提取pdf表格数据并保存到excel文件中的相关资料,需要的朋友可以参考下


  • Python抽象工厂模式知识点详解

    发布:2020-04-15

    这篇文章主要为大家详细介绍了Python设计模式之抽象工厂模式,感兴趣的小伙伴们可以参考一下


  • Python写一个简单的api接口的实现

    发布:2023-04-11

    本文主要介绍了Python写一个简单的api接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • 《Python编程:从入门到实践》第十二章:武装飞船

    发布:2018-12-01

    12-1 蓝色天空 创建一个背景为蓝色的Pygame窗口。 import sysimport pygamedef run():pygame.init()screen = pygame.display.set_mode((1200,600))pygame.display.set_caption(Blue Sky)bg_color = (0,124,195)while True:screen.fill(bg_color)for event in pygame.event.get():if event.type


  • Python中__init__的用法和理解示例详解

    发布:2023-04-13

    在Python中定义类经常会用到__init__函数(方法),首先需要理解的是,两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问,从文字理解比较困难,下面通过示例代码帮助大家理解__init__在python中用法,感兴趣的朋友一起看看吧


  • python torch的用法

    发布:2020-05-19

    python torch又称PyTorach,它是一个以Python 优先的深度学习框架,不仅能够实现强大的GPU 加速,同时还支持动态神经网络,这是现在很多主流框架比如Tensorflow 等都不支持的。


  • Python利用pynimate实现制作动态排序图

    发布:2023-04-23

    这篇文章主要为大家详细介绍了Python如何利用pynimate实现制作动态排序图,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下


网友讨论