Як додати кілька значень до ключа словника в python? [зачинено]


84

Я хочу додати кілька значень до певного ключа в словнику python. Як я можу це зробити?

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

Це замінить значення ["abc"] з 1 на 2.

Натомість я хочу, щоб ["abc"] мав кілька значень (як 1, так і 2).

Відповіді:


161

Складіть значення у списку, наприклад

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

ОНОВЛЕННЯ:

Є кілька способів додати значення до ключа та створити список, якщо такого ще немає. Я покажу один із таких методів невеликими кроками.

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

Результати:

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

Далі спробуйте:

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

Результати:

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

Магія setdefaultполягає в тому, що він ініціалізує значення для цього ключа, якщо цей ключ не визначений, інакше він нічого не робить. Тепер, зазначивши, що setdefaultповертає ключ, ви можете об'єднати їх в один рядок:

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

Результати:

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

Вам слід ознайомитись із dictметодами, зокрема get()методом, і провести деякі експерименти, щоб почути себе комфортно.


8
погляньте на опубліковані часи - ми обоє дали однакову відповідь точно в той же час, аж до другої :)
MattDMo

Я хочу додати по одному.
PythonEnthusiast

1
Як я надаю ключ і значення функції. Якщо ключ вже є, тоді він повинен додати нове значення до ключа.
PythonEnthusiast

1
Ви можете перевірити, чи тип (a ["abc"]) == список. Якщо ні, то створіть новий список із цим елементом як першим елементом у цьому списку.
жовтень

2
Дякую, дуже сподобався a.setdefault ("somekey", []). Append ("bob")
ARH

22

Як щодо

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

Це призведе до:

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

Це те, що ви шукали?


Я хочу додати по одному. як a ["abc"] = 1 і a ["abc"] = "def"
PythonEnthusiast

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

Що робити, якщо я не хочу використовувати список. Чи можу я все-таки додати значення? Наприклад, я маю дикт ["abc": 1]. Тепер я хочу додати "def" до клавіші "abc". Як я можу це зробити?
PythonEnthusiast

2
@ user1162512, якщо ви хочете мати більше одного значення для певного ключа, тоді вам потрібно буде використовувати список або якийсь інший контейнер для кількох значень (інший dict, кортеж тощо). Не можна робити {"abc": 1, 2}так, як дикт - це пара ключ: значення, лише одне значення на ключ.
MattDMo

2
Ми - близнюки-пітони :)
Президент Джеймс К. Полк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.