反復解法と関連付けの間に変化した辞書のサイズ
2022-01-21 22:53:44
RuntimeError: 反復中に辞書のサイズが変更されました。
反復中に辞書の要素を変更することができないことを学習した
for k in my_dict.keys():
if k in my_list:
del my_dict[k]
- 1
- 2
- 3
回避策:トラバーサル条件をリストに変更する
for k in list(my_dict.keys()):
if k in my_list:
del my_dict[k]
- 1
- 2
- 3
のところです。
-
辞書の要素の削除は
del dict[key]
を使用することもできます。dict.pop(key) list(my_dict.keys())
-
そして
list(my_dict)
は、どちらも辞書のキーのリストとなります。
このトラバーサルは、突然、関数型プログラミングの利点を思い起こさせた。
一例として
a = range(20)
for index, i in enumerate(a):
if i % 3 ! = 0:
a.pop(index)
[0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
a = range(20)
filter(lambda x: x % 3 == 0, a)
[0, 3, 6, 9, 12, 15, 18]
- 1
- 2
- 3
- 4
フィルター、マップ、リデュースのようなメソッドを使わない限り、トラバース中にイテレートしたオブジェクトを決して削除しないことを忘れないでください。
関連
-
[解決済み】PyCharmの未解決参照問題
-
Python初心者のための関数の定義
-
[解決済み] 文字列の中で部分文字列が最後に現れるインデックスを検索する
-
[解決済み] ドライバが/usr/local/binにあるにもかかわらず、Selenium "Unable to find matching set of capabilities "と表示される。
-
[解決済み] 上記例外の処理中に別の例外が発生した
-
[解決済み] numpy.argwhereを使って、np.arrayの中のマッチする値を取得します。
-
[解決済み] ModuleNotFoundError: cryptography'という名前のモジュールはありません。
-
[解決済み] 「カスタムスロットで「TypeError: ネイティブのQtシグナルは呼び出し可能ではありません。
-
[解決済み] Python: snmp の timeticks を秒/日などに変換する。
-
TypeError: 'numpy.ndarray' オブジェクトは呼び出し可能ではありません。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: zip 引数 #1 は繰り返しをサポートする必要があります。
-
[解決済み】Travis CIでpython setup.pyがinvalid command 'bdist_wheel'と表示されるのはなぜですか?
-
[解決済み】python flask インポートエラー
-
[解決済み] pandasで1つの列を除くすべての列を選択する方法は?
-
[解決済み] Pythonで2つの変数の論理NANDを取得する方法
-
[解決済み] Django - render(), render_to_response() と direct_to_template() の違いは何ですか?
-
PEP8: Python コード改行時のビジュアルインデントのため継続行がオーバーインデントされる
-
ImportErrorの解決策です。mpl_toolkits.basemap'という名前のモジュールがありません。
-
AttributeError: モジュール 'numpy' には属性 'dtype' がない 問題
-
AttributeError: 'str' オブジェクトに 'get' 属性がない。