Как добавить несколько значений в ключ словаря в Python? [закрыто]

84

Я хочу добавить несколько значений к определенному ключу в словаре Python. Как я могу это сделать?

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

Это заменит значение a ["abc"] с 1 на 2.

Вместо этого я хочу, чтобы ["abc"] имел несколько значений (как 1, так и 2).

PythonEnthusiast
источник

Ответы:

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
Вы можете проверить, является ли type (a ["abc"]) == list. Если нет, то создайте новый список с этим элементом в качестве первого элемента в этом списке.
Octref
2
Спасибо, мне очень понравился a.setdefault ("somekey", []). Append ("bob")
ARH
22

Как насчет

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

Это приведет к:

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

Это то, что вы искали?

MattDMo
источник
Хочу добавлять по одному. например a ["abc"] = 1 и a ["abc"] = "def"
PythonEnthusiast
@ user1162512 a ["abc"]. append ("def")
octref
Что делать, если я не хочу использовать список. Могу ли я добавить значение? Например: у меня есть dict a ["abc": 1]. Теперь я хочу добавить «def» к клавише «abc». Как я могу это сделать?
PythonEnthusiast
2
@ user1162512, если вы хотите иметь более одного значения для определенного ключа, вам нужно будет использовать список или какой-либо другой контейнер для нескольких значений (другой dict, кортеж и т. д.). Вы не можете сделать это, {"abc": 1, 2}потому что dict - это пара ключ: значение, только с одним значением на ключ.
MattDMo
2
Мы - близнецы-питоны :)
Президент Джеймс К. Полк