python字典循环append_python字典无限遍历

#无限遍历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值是列表或者元组,则调用自身

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值