繁体   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