Jak dodać wiele wartości do klucza słownika w Pythonie? [Zamknięte]


84

Chcę dodać wiele wartości do określonego klucza w słowniku Pythona. Jak mogę to zrobić?

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

Spowoduje to zastąpienie wartości ["abc"] z 1 na 2.

Zamiast tego chcę, aby ["abc"] miało wiele wartości (1 i 2).

Odpowiedzi:


161

Ustaw wartość jako listę, np

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

AKTUALIZACJA:

Istnieje kilka sposobów dodawania wartości do klucza i tworzenia listy, jeśli jeszcze takiej nie ma. Jedną z takich metod pokażę małymi krokami.

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

Wyniki:

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

Następnie spróbuj:

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

Wyniki:

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

Magia setdefaultpolega na tym, że inicjalizuje wartość dla tego klucza, jeśli ten klucz nie jest zdefiniowany, w przeciwnym razie nic nie robi. Teraz zauważając, że setdefaultzwraca klucz, możesz połączyć je w jedną linię:

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

Wyniki:

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

Powinieneś przyjrzeć się dictmetodom, w szczególności get()metodzie, i przeprowadzić kilka eksperymentów, aby się z tym pogodzić.


8
spójrz na opublikowane czasy - oboje udzieliliśmy tej samej odpowiedzi dokładnie w tym samym czasie, aż do drugiej :)
MattDMo

Chcę dodawać pojedynczo.
PythonEnthusiast

1
Tak jak podaję klucz i wartość funkcji. Jeśli klucz już istnieje, powinien dołączyć nową wartość do klucza.
PythonEnthusiast,

1
Możesz sprawdzić, czy wpisz (a ["abc"]) == lista. Jeśli nie, utwórz nową listę z tym elementem jako pierwszym elementem na tej liście.
oktref

2
Dzięki, bardzo podobał mi się a.setdefault ("somekey", []). Append ("bob")
ARH

22

Co powiesz na

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

Spowoduje to:

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

Czy tego szukałeś?


Chcę dodawać pojedynczo. like a ["abc"] = 1 i a ["abc"] = "def"
PythonEnthusiast

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

A jeśli nie chcę korzystać z listy. Czy nadal mogę dołączyć wartość? Na przykład: mam dict a ["abc": 1]. Teraz chcę dodać „def” do klawisza „abc”. Jak mogę to zrobić?
PythonEnthusiast,

2
@ user1162512, jeśli chcesz mieć więcej niż jedną wartość dla określonego klucza, musisz użyć listy lub innego kontenera dla wielu wartości (inny dykt, krotka itp.). Nie możesz tego zrobić, {"abc": 1, 2}ponieważ dict to para klucz: wartość, z tylko jedną wartością na klucz.
MattDMo,

2
Jesteśmy bliźniakami Pythona :)
Prezydent James K. Polk
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.