Ответ 1
Лучший способ - использовать collections.defaultdict
с list
по умолчанию:
from collections import defaultdict
dct = defaultdict(list)
Затем просто используйте:
dct[key].append(some_value)
и словарь создаст для вас новый список, если ключ еще не отображен. collections.defaultdict
является подклассом dict
и в противном случае ведет себя как обычный объект dict
.
При использовании стандартного dict
, dict.setdefault()
правильно устанавливает dct[key]
для вас по умолчанию, так что версия должна работать нормально. Вы можете связать этот вызов с помощью .append()
:
>>> dct = {}
>>> dct.setdefault('foo', []).append('bar') # returns None!
>>> dct
{'foo': ['bar']}
Однако, используя dct[key] = dct.get(...).append()
, вы заменяете значение dct[key]
на вывод .append()
, который равен None
.