pyqt5-10. 字典数据遍历

'''
@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 ""

参考:https://blog.csdn.net/weixin_39374967/article/details/86104682
https://blog.csdn.net/lly1122334/article/details/103035060

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章