'''
@description: 遍历整个字典,去除对应的value
is_end_tra 用来标记递归推出标志
value_result 用来承接返回值
@param {type}
@return:
'''
is_end_tra = True
value_result = ""
def traverse_map(data,kval):
global is_end_tra
global value_result
if False == is_end_tra:
return value_result
if isinstance(data, dict):
for k, v in data.items():
traverse_map(v,kval)
elif isinstance(data, (list, tuple, set)):
for v in data:
traverse_map(v,kval)
else:
if data == kval:
is_end_tra = False
value_result = data
return value_result
return value_result
递归的嵌套,找到正确结果后,想要立即退出,使用return是不行的,return只是退出了当前的嵌套,他会一层一层的向外逐层退出,不能将结果正确返回,
正确的做法是使用全局变量,设置退出标志,在函数的开头,不进行其他的操作之前,如果满足,则直接退出
'''
@description: 该函数是通过传入filename,来查找id,然后返回,并且是单层的
@param {type}
@return:
'''
def traverse_map_dc(data,keyval):
counts = data['totalRows']
cont = data['cont']
for item in cont:
if keyval == item['filename'] and 0 == item['filetype']:
return item['id']
return ""