「ダックタイピング」の定義から少し外れてdict.keys()
、リストのようなオブジェクトではなく、反復可能なオブジェクトを返します。リストが機能する場所ではなく、イテラブルが機能する場所ならどこでも機能します。リストも反復可能ですが、反復可能はリスト(またはシーケンス...)ではありません
実際のユースケースでは、辞書内のキーを使用する最も一般的なことは、それらを反復処理することであるため、これは理にかなっています。リストとしてそれらが必要な場合は、 を呼び出すことができますlist()
。
ほとんどzip()
の場合、それは繰り返されますが、まったく同じように、タプルの完全な新しいリストを作成して、それを繰り返し処理してからもう一度破棄するのはなぜですか?
これは、いたるところにあるリストのコピーではなく、より多くのイテレータ (およびジェネレータ) を使用するという Python の大きな傾向の一部です。
dict.keys()
ただし、内包表記で機能するはずです-タイプミスなどを注意深く確認してください...私にとっては問題なく機能します:
>>> d = dict(zip(['Sounder V Depth, F', 'Vessel Latitude, Degrees-Minutes'], [None, None]))
>>> [key.split(", ") for key in d.keys()]
[['Sounder V Depth', 'F'], ['Vessel Latitude', 'Degrees-Minutes']]