この記事の翻訳:Pythonでリストとして辞書キーを返す方法は?
アンでのPython 2.7、I GETでき辞書のキー、値、または項目 A一覧AS: でのPython 2.7は、私が辞書に置くことができ、キー、値、またはアイテムリストとして取得します:
>>> newdict = {1:0, 2:0, 3:0}
>>> newdict.keys()
[1, 2, 3]
さて、中にはPython> = 3.3、このようなIのGETの何かが: さて、中にはPython> = 3.3で、私は、次のメッセージが表示されます。
>>> newdict.keys()
dict_keys([1, 2, 3])
だから、私はリストを取得する ためにこれをしなければなりません:したがって、私はリストを取得するためにこれをしなければなりません:
newlist = list()
for i in newdict.keys():
newlist.append(i)
「M Iを思って、でA一覧には良い方法のリターンがあるのPython 3が? 私が知りたいのは、より良い方法があるのPython 3のリストに戻るには?
#1階
参照:https : //stackoom.com/question/18ZRm/ Pythonでリストとして辞書キーを返す方法
#2F
試してみるlist(newdict.keys())
。 試してみてくださいlist(newdict.keys())
。
ウィルでは、このために変換でdict_keys
Aリストにオブジェクト。 これがしますdict_keys
リストにオブジェクト。
逆に、 大事なの か、大事なのかを自問すべきです。ダックタイピング仮定するコードにPython的な方法で(IS ITがアヒルのように見える場合とITがAのアヒルのように鳴く、ITはアヒルだ)。 Pythonのエンコーディングが想定されているアヒルの入力(それはアヒルの呼び出しのよういんちきアヒルのように見える、とあれば、それはアヒルです)。 で、dict_keys
ほとんどの目的のためのAリストのようなウィルACTによってオブジェクト。 でdict_keys
、オブジェクトの役割リストに似ています。 例えば: 例えば:
for key in newdict.keys():
print(key)
明らかに、挿入演算子は機能しないかもしれませんが、とにかく辞書キーのリストにはあまり意味がありません。 明らかに、挿入演算子は機能しないかもしれませんが、辞書キーワードリストの場合、あまり意味がありません。
#3階
定義『タイピングのダック』 OFF A ON「ビット- dict.keys()
、リストAはありませんが、同じようAN反復処理可能なオブジェクトを返しますオブジェクト。 『鴨の種類』で定義されてdict.keys()
離れるdict.keys()
というリストのようなオブジェクトよりも、イテレータオブジェクトを返します。 iterableが機能する場所ならどこでも機能しますが、リストが機能する場所では機能しません 。 リストも反復可能ですが、反復可能ではないリスト(またはシーケンス...)リストも反復可能ですが、反復可能ではあり ません(またはシーケンス...)
実際のユースケースでは、dictのキーを使用する最も一般的なことは、それらを反復することです。 その ため、これは理にかなっています。実際のユースケースでは、辞書のキーに関連する最も一般的なことは、それらをトラバースすることです。だからそれは理にかなっています。あなたは彼らとAS A CANコールリストを必要としない場合list()
。 あなたが本当にリストとしてそれらを必要とする場合は、呼び出すことができますlist()
。
同様に、非常にためにzip()
- ? -ほとんどの場合では、ITを経由繰り返されるタプルちょうどその時それが離れて再びなぜITを通じて新しい新しいANリスト全体と反復を作成するために、スローの とzip()
非常に似て-ほとんどの状況で、それは意志反復する-反復するだけで破棄するために、タプル全体の新しいリストを作成したのはなぜですか?
これは、Pythonの大きな傾向の一部であり、 リストのコピーをあちこちにコピーするのではなく、より多くのイテレータ(およびジェネレータ)を使用します。これは、どこでもリストのコピーを使用する代わりに、Pythonでより多くのイテレータ(およびジェネレータ)を使用することです。メガトレンドの一部。
dict.keys()
内包表記で動作するはずですが、タイプミスなどを慎重に確認してください...私にとっては問題なく動作します。 タイプミスがある場合は、理解できるように確認してください... 私にとってはうまくいきます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']]
#4F
list(newdict)
Python 2とPython 3の両方で機能し、にキーの簡単なリストを提供しますnewdict
。どちらもPython 2とPython 3で list(newdict)
使用できnewdict
、にキーの簡単なリストを提供します。keys()
必要 keys()
ありません必要ありません (:( :
#5F
A CANはまた、あなたによって使用リストの内包表記: あなたが使用することもでき、リストの内包表記を:
>>> newdict = {1:0, 2:0, 3:0}
>>> [k for k in newdict.keys()]
[1, 2, 3]
または、より短く、 またはより短く
>>> [k for k in newdict]
[1, 2, 3]
注:3.7未満のバージョンでの順序は保証されません(順序付けはCPython 3.6の実装の詳細のみです) 注:3.7 未満のバージョンでは、順序付けは保証されていません(順序付けはCPython 3.6の実装の詳細のみです)。
#6階
Aリストに変換使用せずにkeys
:方法、ITを読みやすく 使用しないkeys
リストの場合には変換方法は、それをより読みやすくします:
list(newdict)
そして、辞書をループするとき、必要はありませんkeys()
: そして、辞書をループするとき、必要はありません:keys()
for key in newdict:
print key
事前に作成されたキーのリストを必要とするループ内でそれを変更しない限り:ループで変更したくない場合は、事前に作成されたキーリストが必要になります。
for key in list(newdict):
del newdict[key]
2そこPythonのAは、限界性能で使用してゲインであるkeys()
。 使用でPython 2、keys()
性能の少量を得ること。