ディクショナリを反復処理中に変更します。 Python dictのバグ?
d = {1: 1}
for k in d.keys():
d['{}'.format(k)] = d.pop(k)
print(d)
の出力は{'1': 1}
です。
d = {1: 1}
for k in d.keys():
d['i{}'.format(k)] = d.pop(k)
print(d)
の出力は{'iiiii1': 1}
です。これはバグですか?私はPython 3.6.1 :: Anaconda 4.4.0 (x86_64)
を実行しています。
なぜそれがバグでしょうか?反復処理中*キーを削除して追加します。あなたは無限ループに終わらなかったのは幸運です。 –
*繰り返しながら*コレクションを変更*しないでください。それは奇妙な行動につながる可能性があるので、特に辞書ではありません。 –
@ user2725109:最初のループは一度だけ実行されたことをどのように知っていますか?あなたが知っているすべてのために、それは1000回走った。 –