Wie man Dictionarieschlüssel als Liste in Python erhält

  1. dict.keys() um Python-Dictionarieschlüssel zu erhalten
  2. Schleifen zur Ermittlung von Python-Dictionarieschlüsseln
  3. Auflisten der Verständnisse, um Python-Dictionarieschlüssel zu erhalten
  4. Python-Dictionary entpacken * Operator, um die Schlüssel zu erhalten
  5. Vergleich der Laufzeit-Performance

Die Darstellung von Dictionarieschlüsseln als Sequenz ist ein alltäglicher Anwendungsfall in der Python-Programmierung.

Es gibt verschiedene Ansätze, um dies zu erreichen, jeder mit unterschiedlichen Leistungsmerkmalen.

dict.keys() um Python-Dictionarieschlüssel zu erhalten

Die Funktion dict.keys() gibt dict_keys zurück - eine iterierbare Ansicht der Schlüssel des Dictionaries.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> state_capitals.keys()
dict_keys(['California', 'Pennsylvania', 'Texas'])

Sie können direkt über dict_keys iterieren, ohne es in eine Liste zu konvertieren. Für viele Anwendungsfälle kann dict_keys anstelle einer Liste in APIs fallen gelassen werden, und es wird funktionieren.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> for state in state_capitals.keys():
...   print(state)
...
California
Pennsylvania
Texas

Wenn Sie mit Dictionarieschlüsseln streng wie mit Listen arbeiten müssen, zum Beispiel, wenn Sie um einen Index zum Lesen eines bestimmten Schlüssels aus der Sequenz verwenden zu können, sollten Sie dict_keys zuerst in eine Liste einzutragen.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> list(state_capitals.keys())
['California', 'Pennsylvania', 'Texas']

Beachten Sie, dass der Aufruf von dict.keys() optional ist, wenn Sie Schlüssel als Liste erhalten wollen. Da Python-Wörterbücher über ihre Schlüssel iterierbar sind, können Sie eine sich selbst in einen Listenkonstruktor eintragen.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> list(state_capitals)
['California', 'Pennsylvania', 'Texas']

Schleifen zur Ermittlung von Python-Dictionarieschlüsseln

Eine eigenartige Eigenschaft von Wörterbüchern in Python ist, dass wenn man über sie iteriert, Sie iterieren ihre Schlüssel. So können Sie alle Dictionarieschlüssel einfach sammeln, indem Sie darüber iterieren.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = []
>>> for key im state_capitals:
...   keys.append(key)
...
>>> keys
['California', 'Pennsylvania', 'Texas']

Auflisten der Verständnisse, um Python-Dictionarieschlüssel zu erhalten

Eine syntaktische Verbesserung gegenüber der Verwendung von Schleifen kann die Verwendung von Python’s List Comprehensions sein. Mit list comprehensions kann man die obige Schleife zu einem Einzeiler verdichten.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = [key for key in state_capitals]
>>> keys
['California', 'Pennsylvania', 'Texas']

Python-Dictionary entpacken * Operator, um die Schlüssel zu erhalten

Ab Python 3.5 können wir den entpackenden * Operator verwenden, um die Dictionarytasten zu überblicken. Diese Funktion wurde mit PEP 448 - Zusätzliche Entpackungs-Generalisierungen eingeführt.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = [*state_capitals]
>>> keys
['California', 'Pennsylvania', 'Texas']

Der Vorteil dieses Ansatzes ist, dass Sie Ihre Dictionarieschlüssel in andere Sammlungen jenseits von Listen, wie Tupel oder Sets, entpacken können.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys_tuple = *state_capitals,
>>> keys_tuple
('California', 'Pennsylvania', 'Texas')
>>> keys_set = {*state_capitals}
>>> keys_set
{'California', 'Pennsylvania', 'Texas'}

Vergleich der Laufzeit-Performance

Die Laufzeitleistungen der einzelnen oben genannten Ansätze variieren.

>>> from timeit import timeit
>>> timeit("list(state_capitals.keys())", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.25394885599962436
>>> timeit("list(state_capitals)", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.17995373999929143
>>> timeit("for key in state_capitals: keys.append(key)", setup="keys = []; state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.25294865500018204
>>> timeit("[key for key in state_capitals]", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.2447525150000729
>>> timeit("[*state_capitals]", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.0962776809992647

Wie aus den obigen Zeitangaben hervorgeht, ist der * Auspack-Operator am schnellsten.

Bevorzugen Sie ihn, es sei denn, Sie haben einen guten Grund, auf einen der anderen Ansätze zurückzugreifen.

Verwandter Artikel - Python Dictionary

  • Dictionary in JSON speichern in Python
  • Wie man ein Element aus einem Python-Dictionary entfernt