Добавление нескольких значений в одно значение в словаре - PullRequest
0 голосов
/ 27 ноября 2011

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

Например, дано:

dic = {"i'm": ['the']}

Я хотел бы добавить строку 'boss' в список строк, хранящихся в разделе "i'm", т.е.

dic = {"i'm": ['the','boss']}

Ответы [ 5 ]

4 голосов
/ 27 ноября 2011

Предполагая, что ключ находится в словаре, это простое решение, показанное уже несколько раз:

dic["i'm"].append("boss")

Если ключ может отсутствовать в словаре, либо сначала проверьте с помощью if key in dic, либо используйте dic.setdefault, либо используйте defaultdict . Дефолт по умолчанию существует в значительной степени для рассматриваемого вами случая:

import collections
dd = collections.defaultdict(list)
dd["i'm"].append("the")
dd["i'm"].append("boss")
print dd # defaultdict(<type 'list'>, {"i'm": ['the', 'boss']})
2 голосов
/ 27 ноября 2011
dic["i'm"].append("boss")

, потому что dic["i'm"] - это список, к которому вы хотите добавить.

1 голос
/ 27 ноября 2011

Если есть вероятность (... и почти всегда есть, если вы сначала не проверили существование и не включили здесь этот код), что ключ, который вы ищете, еще не был добавлен в диктовку, просто выполняю код вроде

dic["i'm"].append('boss')

вызовет исключение KeyError. Чтобы защитить себя, вы должны либо обернуть свой код в блок try / Кроме того, либо использовать метод dict setdefault, чтобы убедиться, что сначала есть пустой список, например:

dic.setdefault("i'm", []).append('boss')

Если dic уже содержит список для ключа «Я», он возвращается. Если нет, setdefault сначала добавляет пустой список к dict и возвращает его. Затем вы добавляете в список, который уже существовал или был создан для вас.

1 голос
/ 27 ноября 2011

Вы можете достичь этого:

dic["i'm"].append('boss')
0 голосов
/ 27 ноября 2011

Вам просто нужно добавить в список.Сначала получите список, затем добавьте:

lst = dic["i'm"]
lst.append("boss")

Или вы можете сделать это за один шаг:

dic["i'm"].append('boss')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...