Python3 エラー解決 RuntimeError: dictionary changed size during iteration

PYTHON3 チュートリアル

このエラーは、Pythonの辞書をイテレーション中に辞書のサイズが変更された場合に発生します。具体的には、辞書を変更(要素の追加、削除など)する操作を行っている間に、その辞書をイテレートしているときにこのエラーが発生します。

このエラーを回避するためには、辞書をイテレートする間にその辞書を変更しないようにする必要があります。代わりに、辞書のキーのリストを作成してからそのリストをイテレートする方法があります。これにより、辞書のサイズが変更されてもイテレーションが中断されることはありません。

例えば、次のようなコードでこのエラーが発生する可能性があります:

my_dict = {'a': 1, 'b': 2, 'c': 3}

for key, value in my_dict.items():
    if value == 2:
        del my_dict[key]

この場合、辞書 my_dict をイテレートしている間に、要素 ‘b’ が削除されるため、エラーが発生します。

この問題を回避するために、辞書のキーのリストを作成してからイテレートすることができます:

my_dict = {'a': 1, 'b': 2, 'c': 3}

for key in list(my_dict.keys()):
    if my_dict[key] == 2:
        del my_dict[key]

この方法では、list(my_dict.keys()) によって辞書のキーのリストが作成され、そのリストをイテレートしているため、辞書のサイズが変更されてもエラーが発生しません。

※初心者向けの13冊のPython独学書

購読
通知
1 Comment
Inline Feedbacks
View all comments