1. ホーム
  2. プログラミング言語
  3. パイソン

python--Iterating over the dictionary object to remove the key with a error RuntimeError: dictionary changed size during iteration

2022-01-21 15:26:18

原因

値がNULLの辞書オブジェクトのキーを上げる必要がある

  1. def test_dic(dic):
  2. for x in dic.keys():
  3. if dic[x] is None:
  4. dic.pop(x)
  5. return dic
  6. t_dic = {'a1': None, 'b1': 1}
  7. print(test_dic(t_dic))

エラーで実行します。RuntimeError: 反復中に辞書のサイズが変更されました。

イテレーション中に辞書の要素を変更することはできませんので、以下の方法でイテレーションを修正してください。

  1. def test_dic(dic):
  2. for x in list(dic.keys()):
  3. if dic[x] is None:
  4. dic.pop(x)
  5. return dic
  6. t_dic = {'a1': None, 'b1': 1}
  7. print(test_dic(t_dic))

正常に実行され、次のように表示されました: {'b1': 1}