Wie füge ich einem Wörterbuchschlüssel in Python mehrere Werte hinzu? [geschlossen]


80

Ich möchte einem bestimmten Schlüssel in einem Python-Wörterbuch mehrere Werte hinzufügen. Wie kann ich das machen?

a = {}
a["abc"] = 1
a["abc"] = 2

Dies ersetzt den Wert von a ["abc"] von 1 bis 2.

Ich möchte stattdessen, dass ein ["abc"] mehrere Werte hat (sowohl 1 als auch 2).

Antworten:


154

Machen Sie den Wert zu einer Liste, z

a["abc"] = [1, 2, "bob"]

AKTUALISIEREN:

Es gibt verschiedene Möglichkeiten, dem Schlüssel Werte hinzuzufügen und eine Liste zu erstellen, falls noch keine vorhanden ist. Ich werde eine solche Methode in kleinen Schritten zeigen.

key = "somekey"
a.setdefault(key, [])
a[key].append(1)

Ergebnisse:

>>> a
{'somekey': [1]}

Versuchen Sie als nächstes:

key = "somekey"
a.setdefault(key, [])
a[key].append(2)

Ergebnisse:

>>> a
{'somekey': [1, 2]}

Die Magie von setdefaultist, dass es den Wert für diesen Schlüssel initialisiert, wenn dieser Schlüssel nicht definiert ist, sonst tut es nichts. Wenn setdefaultSie nun den Schlüssel zurückgeben, können Sie diese in einer einzigen Zeile kombinieren:

a.setdefault("somekey",[]).append("bob")

Ergebnisse:

>>> a
{'somekey': [1, 2, 'bob']}

Sie sollten sich die dictMethoden ansehen , insbesondere die get()Methode, und einige Experimente durchführen, um sich damit vertraut zu machen.


8
Werfen Sie einen Blick auf die veröffentlichten Zeiten - wir gaben beide die gleiche Antwort genau zur gleichen Zeit, bis auf die Sekunde :)
MattDMo

Ich möchte eins nach dem anderen hinzufügen.
PythonEnthusiast

1
Als würde ich einer Funktion einen Schlüssel und einen Wert geben. Wenn der Schlüssel bereits vorhanden ist, sollte der neue Wert an den Schlüssel angehängt werden.
PythonEnthusiast

1
Sie können überprüfen, ob type (a ["abc"]) == list. Wenn nicht, erstellen Sie eine neue Liste mit diesem Element als erstem Element in dieser Liste.
Oktref

2
Danke, mochte a.setdefault ("somekey", []). Append ("bob")
ARH

22

Wie wäre es mit

a["abc"] = [1, 2]

Dies führt zu:

>>> a
{'abc': [1, 2]}

Haben Sie danach gesucht?


Ich möchte eins nach dem anderen hinzufügen. wie a ["abc"] = 1 und a ["abc"] = "def"
PythonEnthusiast

@ user1162512 a ["abc"]. append ("def")
oktref

Was ist, wenn ich die Liste nicht verwenden möchte. Kann ich den Wert trotzdem anhängen? Zum Beispiel: Ich habe ein Diktat a ["abc": 1]. Jetzt möchte ich "def" zum Schlüssel "abc" hinzufügen. Wie kann ich das machen?
PythonEnthusiast

2
@ user1162512 Wenn Sie mehr als einen Wert für einen bestimmten Schlüssel haben möchten, müssen Sie eine Liste oder einen anderen Container für mehrere Werte verwenden (ein anderes Diktat, ein Tupel usw.). Sie können nicht {"abc": 1, 2}als Diktat ein Schlüssel-Wert-Paar mit nur einem Wert pro Schlüssel tun .
MattDMo

2
Wir sind Python-Zwillinge :)
Präsident James K. Polk
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.