簡體   English   中英

RuntimeError:字典在迭代過程中改變了大小 PYTHON

[英]RuntimeError: dictionary changed size during iteration PYTHON

我正在嘗試根據條件從字典中刪除鍵值,但是當我嘗試時收到錯誤

RuntimeError:字典在迭代期間改變了大小

這是我的代碼

threading.Timer(5.0, compare_time_connecteds).start()   

FMT = '%H:%M:%S'                                                
datesys_compare = datetime.now().strftime("%H:%M:%S")     

keys = connecteds.keys()

if len(keys) != 0:
    for i in keys:                   
        true_time = datetime.strptime(datesys_compare, FMT) - datetime.strptime(connecteds.get(i), FMT)    
        difference_in_seconds = true_time.total_seconds()                                   #       

        if difference_in_seconds > 20:               
            connecteds.pop(i) 

這是錯誤

 for i in keys:      
 RuntimeError: dictionary changed size during iteration

我解決了這個強制成為列表

FMT = '%H:%M:%S'                                                
datesys_compare = datetime.now().strftime("%H:%M:%S")     

keys = list(connecteds.keys())

嘗試用表達式connecteds.keys()替換變量keys 我假設您正在使用線程,並且還在這些線程中使用了connecteds 可能是正在改變大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM