Python: list () в качестве значения по умолчанию для словаря

У меня есть код Python, который выглядит так:

if key in dict: dict[key].append(some_value) else: dict[key] = [some_value] 

но я считаю, что должен быть какой-то метод, чтобы обойти это утверждение «если». Я пытался

 dict.setdefault(key, []) dict[key].append(some_value) 

а также

 dict[key] = dict.get(key, []).append(some_value) 

но оба жалуются на «TypeError: unhashable type:« list »». Любые рекомендации? Благодаря!

One Solution collect form web for “Python: list () в качестве значения по умолчанию для словаря”

Лучший метод – использовать 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() этот вызов с помощью .append() :

 >>> dct = {} >>> dct.setdefault('foo', []).append('bar') # returns None! >>> dct {'foo': ['bar']} 

Однако, используя dct[key] = dct.get(...).append() вы заменяете значение для dct[key] выходным .append() , который является None .

  • Объединение 2 файлов csv
  • Компиляция в байтовый код занимает слишком много памяти
  • Как получить из python dict, где ключ только частично известен?
  • Модуль Python с доступом к английским словарям, включая определения слов
  • добавить несколько значений для одного ключа в словаре Python
  • Как я могу извлечь все значения из словаря в Python?
  • Объект Date только год и месяц
  • Сравнение двух словарей с матрицами numpy как значений
  • Как поднять ошибку, если дублирует ключи в словаре
  • Python: Получить индекс словаря в списке
  • Порядок ключей в словаре Python
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.