HOWTO · Python
So erhalten Sie den ersten Schlüssel in einem Python-Dictionary
Lernen Sie, den ersten Schlüssel zu erhalten, den ein Python-Dictionary-Iterator liefert – mit next(), der Umwandlung in eine Liste, einer for-Schleife und einem sicheren Standardwert für leere Dictionaries.
Auf dieser Seite
Um den ersten Schlüssel zu erhalten, den ein Python-Dictionary liefert, rufen Sie next(iter(my_dict)) auf. Damit lesen Sie einen Schlüssel direkt aus dem Dictionary-Iterator. In diesem Beispiel enthält das Dictionary einen Namen und eine Stadt, und das Programm gibt den zuerst gelieferten Schlüssel aus:
my_dict = {"name": "Ada", "city": "London"}
first_key = next(iter(my_dict))
print(first_key)
Was „erster“ in einem Dictionary bedeutet
Ein Dictionary bietet keine numerische Indizierung für Schlüssel. „Erster“ meint hier den ersten Schlüssel, den Python beim Iterieren über das Dictionary liefert. Bei einem geordneten Dictionary folgt die Iteration seiner Einfügereihenfolge, der erste Schlüssel ist also der am frühesten eingefügte. Verwendet ein Mapping eine andere Iterationsreihenfolge, richtet sich „erster“ nach dem Iterationsverhalten dieses Mappings. Diese Definition beschreibt das Iterationsergebnis; sie setzt nicht voraus, dass jedes Mapping seine Schlüssel auf dieselbe Weise ordnet.
Die Iteration über ein Dictionary liefert standardmäßig Schlüssel. Sie können das Dictionary daher direkt an iter() oder eine for-Schleife übergeben. Sie müssen nicht zuerst keys() aufrufen. Die Methode my_dict.keys() gibt eine dynamische Ansicht der Schlüssel zurück, wenn Sie diese Ansicht separat untersuchen oder wiederverwenden müssen.
Den ersten Schlüssel mit next() erhalten
Erstellen Sie mit iter() einen Iterator über das Dictionary und rufen Sie dann mit next() dessen nächstes Element ab. Da ein Dictionary-Iterator Schlüssel liefert, liest dieser Ansatz einen Schlüssel, ohne eine separate Liste aller Schlüssel aufzubauen. Für ein nicht leeres Dictionary ist das die kompakte Wahl, wenn Sie nur einen Schlüssel benötigen:
my_dict = {"name": "Ada", "city": "London"}
first_key = next(iter(my_dict))
print(first_key)
Der Wert von first_key ist der erste von der Iteration erzeugte Schlüssel. next() akzeptiert außerdem einen optionalen Standardwert, was nützlich ist, wenn das Dictionary möglicherweise keine Schlüssel enthält. Der letzte Abschnitt zeigt diese Form.
Den ersten Schlüssel mit list() erhalten
Wenn Sie die Schlüssel auch als Liste benötigen, wandeln Sie das Dictionary in eine Liste um und wählen Sie den Index 0. Ein an list() übergebenes Dictionary liefert seine Schlüssel, Sie müssen also nicht zuerst keys() aufrufen:
my_dict = {"name": "Ada", "city": "London"}
first_key = list(my_dict)[0]
print(first_key)
Diese Umwandlung materialisiert jeden Schlüssel, bevor einer ausgewählt wird. Verwenden Sie den Iterator-Ansatz, wenn Sie nur einen einzelnen Schlüssel benötigen. Die Umwandlung in eine Liste ist nützlich, wenn die resultierende Liste auch indiziert, in Scheiben zerlegt oder in einer anderen Listenoperation verwendet wird. Der Index 0 setzt voraus, dass die Liste einen Schlüssel enthält; diese Form eignet sich daher nicht, wenn das Dictionary leer sein kann, es sei denn, Sie prüfen das vorher.
Den ersten Schlüssel mit einer for-Schleife erhalten
Eine for-Schleife iteriert direkt über die Schlüssel eines Dictionarys. Weisen Sie den ersten Schlüssel zu und beenden Sie die Schleife danach mit break:
my_dict = {"name": "Ada", "city": "London"}
for key in my_dict:
first_key = key
break
print(first_key)
Dieser Ansatz eignet sich für Code, der bereits eine Schleife verwendet oder mit dem Schlüssel eine Operation ausführen muss, bevor er anhält. Er vermeidet die Umwandlung aller Schlüssel in eine Liste. Die Schleife benötigt kein items(), wenn der Wert nicht verwendet wird. Enthält das Dictionary keine Schlüssel, wird der Schleifenrumpf nie ausgeführt; Code, der first_key danach verwendet, sollte diese Möglichkeit berücksichtigen.
Ein leeres Dictionary behandeln
Der Aufruf von next(iter(my_dict)) bei einem Dictionary ohne Schlüssel löst StopIteration aus. Übergeben Sie next() ein zweites Argument, um stattdessen einen Ersatzwert zurückzugeben:
my_dict = {}
first_key = next(iter(my_dict), None)
print(first_key)
Hier ist None der Ersatzwert. Wählen Sie einen Standardwert, der nicht mit einem gültigen Dictionary-Schlüssel verwechselt werden kann. Wenn None in Ihren Daten ein Schlüssel sein kann, erstellen Sie ein eindeutiges Sentinel-Objekt und verwenden Sie es als Standardwert:
my_dict = {"name": "Ada", "city": "London"}
sentinel = object()
first_key = next(iter(my_dict), sentinel)
if first_key is sentinel:
print("No keys")
else:
print(first_key)
Der Listen-Ansatz mit list(my_dict)[0] hat kein Standardargument und löst IndexError aus, wenn keine Schlüssel vorhanden sind. Verwenden Sie next(iter(my_dict), default), wenn ein direkt angegebener Ersatzwert das Verhalten bei leerer Eingabe leichter handhabbar macht.