反復中のコレクションの変更
辞書 users の要素を for 文で順に調べながら、条件に合う要素を削除したい。最も適切な書き方を1つ選べ。
- A
for user, status in users.items(): if status == "inactive": del users[user] - B
for user, status in users.copy().items(): if status == "inactive": del users[user] - C
for user in users: users.clear() - D
辞書の要素は、どんな方法でも削除できない。
正解と解説を見る
正解:B
コレクションを反復しながら変更するときは、コピーを反復するか、新しいコレクションを作る。
- A
誤り。反復中の辞書の大きさを変えると、RuntimeError になる。
- B
正しい。コピーを反復しながら元の辞書を変更すれば、反復が乱れない。条件に合う要素だけで新しい辞書を作る方法もある。
- C
誤り。目的と違う処理で、反復中に辞書を変更している。
- D
誤り。
delなどで削除できる。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。