Wie man Dictionarieschlüssel als Liste in Python erhält
-
dict.keys()
um Python-Dictionarieschlüssel zu erhalten - Schleifen zur Ermittlung von Python-Dictionarieschlüsseln
- Auflisten der Verständnisse, um Python-Dictionarieschlüssel zu erhalten
-
Python-Dictionary entpacken
*
Operator, um die Schlüssel zu erhalten - 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 Dictionaries 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
- Wie man prüft, ob ein Schlüssel in einem Dictionary in Python vorhanden ist
- Konvertieren eines Dictionaries in eine Liste in Python
- So erhalten Sie alle Dateien eines Verzeichnisses
- Wie finde ich den Maximalwert im Python-Dictionary
- Wie man ein Python-Dictionary nach Wert sortiert
- Wie man zwei Wörterbücher in Python 2 und 3 zusammenführen kann