Python2
〜Pytnon3
を2to3
にマイグレーションしています。 (とPython3.5.2
正確に)dict.keys()をPython3の反復のリスト(dict.keys())に変換する必要がありますか?2to3はそれを変換することを提案します
マイグレーション中に2to3
は、以下のようなタイプキャストを使用することを提案しています。
a = {1: 1, 2: 2, 3: 3}
for i in a.keys(): ----> for i in list(a.keys()):
print(i)
その後、私はスクリプトにどのような違いがあるかを確認しようとします。
$ python3
>>> a = {1: 1, 2: 2, 3: 3}
>>> a.keys()
dict_keys([1, 2, 3])
>>> for i in a.keys(): print(i)
1
2
3
は、それは明らかに異なるタイプdict_keys
がlist
しかしdict_keys
はまだ上記の単純なコードでは、型キャストせずにlist
のようなloop
で動作するようですされていない返されます。
私がタイプキャストなしで使用すると、いくつかの副作用があるのでしょうか。 何もない場合は、不要な操作に見えます。
なぜ2to3
はそれを示唆していますか?
'len'にも' list() 'が必要です。 – hansaplast
良い呼び出し。私もそれにぶつかりました。 –