Wie man Wörterbuchschlüssel als Liste in Python erhält

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

Die Darstellung von Wörterbuchschlü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-Wörterbuchschlüssel zu erhalten

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

>>> 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 Wörterbuchschlü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-Wörterbuchschlü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 Wörterbuchschlü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-Wörterbuchschlüssel zu erhalten

Eine syntaktische Verbesserung gegenüber der Verwendung von Schleifen kann die Verwendung von Python’s Listenverständnis 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-Wörterbuch entpacken * Operator, um die Schlüssel zu erhalten

Ab Python 3.5 können wir den entpackenden * Operator verwenden, um die Wörterbuchtasten 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 Wörterbuchschlü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

  • Wie man ein Python-Wörterbuch nach Wert sortiert
  • Wie man prüft, ob ein Schlüssel in einem Wörterbuch in Python vorhanden ist
  • comments powered by Disqus