RuntimeError: dictionary changed size during iteration
时间: 2024-03-23 07:37:27 浏览: 100
这个错误是因为在遍历字典的过程中,对字典进行了修改,导致字典大小发生了变化,从而引起了错误。在Python中,不能在遍历字典的过程中对字典进行增删改操作。
解决方法可以有两种:
1. 使用一个临时的列表存储需要删除的键,然后再在循环外面使用del语句删除这些键值对,示例代码如下:
```python
my_dict = {'key1': 'value1.html', 'key2': 'value2.txt', 'key3': 'value3.html'}
keys_to_delete = []
for key, value in my_dict.items():
if not value.endswith('.html'):
keys_to_delete.append(key)
for key in keys_to_delete:
del my_dict[key]
print(my_dict)
```
输出:
```
{'key1': 'value1.html', 'key3': 'value3.html'}
```
2. 使用字典的copy()方法创建一个副本,然后遍历副本进行增删改操作,示例代码如下:
```python
my_dict = {'key1': 'value1.html', 'key2': 'value2.txt', 'key3': 'value3.html'}
for key, value in my_dict.copy().items():
if not value.endswith('.html'):
del my_dict[key]
print(my_dict)
```
输出:
```
{'key1': 'value1.html', 'key3': 'value3.html'}
```
注意,在使用副本进行操作时,需要使用字典的copy()方法创建一个浅拷贝,否则修改副本会同时影响原字典。
阅读全文