#无限遍历dict,通过key获取value,嵌套字典存在多个相同的key,可获取多个key
class getValues(object):
def __init__(self):
pass #无限遍历dict,通过key获取value,嵌套字典存在多个相同的key,可获取多个key
def get_target_value(self,key, dic, tmp_list):
"""
:param key: 目标key值
:param dic: JSON数据
:param tmp_list: 用于存储获取的数据
:return: list
"""
if not isinstance(dic, dict) or not isinstance(tmp_list, list): # 对传入数据进行格式校验
return 'argv[1] not an dict or argv[-1] not an list ' if key in dic.keys():
tmp_list.append(dic[key]) # 传入数据存在则存入tmp_list
for val in dic.values():
if isinstance(val, dict):
self.get_target_value(key, val, tmp_list) # 传入数据的value值是字典,则直接调用自身
elif isinstance(val, (list, tuple)):
self.get_value(key, val, tmp_list) # 传入数据的value值是列表或者元组,则调用get_value
else:
for value in dic.values(): # 传入数据不符合则对其value值进行遍历
if isinstance(value, dict):
self.get_target_value(key, value, tmp_list) # 传入数据的value值是字典,则直接调用自身
elif isinstance(value, (list, tuple)):
self.get_value(key, value, tmp_list) # 传入数据的value值是列表或者元组,则调用get_value
return tmp_list #循环判断是否需要遍历value,get_target_value子方法
def get_value(self,key, val, tmp_list):
for val_ in val:
if isinstance(val_, dict):
self.get_target_value(key, val_, tmp_list) # 传入数据的value值是字典,则调用get_target_value
elif isinstance(val_, (list, tuple)):
self.get_value(key, val_, tmp_list) # 传入数据的value值是列表或者元组,则调用自身

python字典无限遍历的更多相关文章

  1. Python 字典的遍历

    dic = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟" ...

  2. python字典的遍历

    遍历字典: keys()  .values() .items() 1. xxx.keys()    :    返回字典的所有的key     返回一个序列,序列中保存有字典的所有的键 效果图: 代码: ...

  3. Python--递归函数实现:多维嵌套字典数据无限遍历

    原创:多层嵌套字典无限遍历,实现当value值以特殊字符$开头,并且等于某项值时,用随机函数替换该参数 """处理前的字典{'patient': {'avatarPic' ...

  4. 遍历python字典几种方法

    遍历python字典几种方法 from: http://ghostfromheaven.iteye.com/blog/1549441 aDict = {'key1':'value1', 'key2': ...

  5. Python中元组、列表、字典的遍历和相互转化

    一.元组,列表,字典的遍历 1.1 元组的遍历 元组的遍历借助 range() 函数,基本思想是通过元组的长度使用for循环进行遍历,代码如下:     fruits=("apple&quo ...

  6. !!Python字典增删操作技巧简述+Python字典嵌套字典与排序

    http://developer.51cto.com/art/201003/186006.htm Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些 ...

  7. Python字典和集合

    Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...

  8. python字典的常用操作方法

    Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...

  9. Python 字典(Dictionary)操作详解

    Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...

随机推荐

  1. Vue全家桶

    简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计. 为什么 ...

  2. bugfree,CDbConnection 无法开启数据库连线: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '192.168.0.99' (4)

    安装bugfree后,访问报错:CDbConnection 无法开启数据库连线: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '19 ...

  3. Mac里安装Jmeter

    前提是需要安装jdk,参见http://www.cnblogs.com/fun0623/p/4703456.html 1.解压包 (双击apache-jmeter-2.13) 2.进去到解压后的bin ...

  4. CentOS ping www.baidu.com 报错 name or service not know

    今天尝试安装了centos系统 玩一玩 刚刚装好的操作系统 ping www.baidu.com的时候  报出 name or service not known 查了好多资料,都没有很好的解决 最后 ...

  5. Python 中格式化字符串 % 和 format 两种方法之间的区别

    Python2.6引入了 format 格式化字符串的方法,现在格式化字符串有两种方法,就是 % 和 format ,具体这两种方法有什么区别呢?请看以下解析. # 定义一个坐标值 c = (250, ...

  6. [转]安卓新一代多渠道打包工具Walle 解决渠道包V2签名问题

    转自https://www.jianshu.com/p/572b59829a08 为什么要打多个渠道的包? 大家都知道,android应用商店大大小小有几百个,作为一个有志向的app,就需要做到统计各 ...

  7. url,href,src之间的区别

    发现自己居然没把url.href.src关系及使用搞清楚,今天就理一下.主要包括:url.src.href定义以及使用区别. URL(Uniform Resource Locator) 统一资源定位符 ...

  8. Text-查找文本

    from tkinter import * master=Tk() text=Text(master,width=30,height=5) text.pack() text.insert(INSERT ...

  9. winform 如何加载Url图像(图像)

    解决方法: 1pictureBox1.Image = Image.FromStream(System.Net.WebRequest.Create(http://www.baidu/new.gif ). ...

  10. PHP 通过fsockopen函数获取远程网页源码

    <?php $fp = fsockopen("www.baidu.com", 80, &$errno, &$errstr, 10); if(!$fp) { e ...