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

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