[解決済み】反復中に辞書のサイズが変更されたエラーの解決方法とは?
2022-02-21 18:39:57
質問
辞書にある大きな値とそのキーをすべてポップアウトし、小さな値を残したい。以下は、私のプログラムの一部です。
for key,value in dictionary.items():
for key1, value1 in dictionary.items():
if key1!= key and value > value1:
dictionary.pop(key)
print (dictionary)
という結果になります。
RuntimeError: dictionary changed size during iteration
どうすればこのエラーを回避できますか?
解決方法は?
代替案
もし、辞書の中の最小の値を探しているのであれば、このようにすることができます。
min(dictionary.values())
minが使えない場合は、sortedを使用することができます。
sorted(dictionary.values())[0]
なぜこのエラーが発生するのですか?
余談ですが、このように
Runtime Error
は、内側のループで、外側のループが基づいているイテレータを変更するためです。このとき
pop
というエントリーがあり、外側のイテレータがそれに到達すると、削除された要素にアクセスしようとするため、エラーが発生します。
Python 2.7 (3.xではない) でコードを実行しようとすると、実際に
Key Error
.
エラーを回避するためにはどうしたらよいですか?
を変更したい場合 イテラブル をベースにしたループ内の イテレータ を使用する必要があります。 ディープコピー その
関連
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] 2つのリストを辞書に変換するにはどうしたらいいですか?
-
[解決済み] 辞書をキーでソートするにはどうしたらいいですか?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
python implement mysql add delete check change サンプルコード
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
PythonによるExcelファイルの一括操作の説明
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac