Использование setdefault в работе со словарем в python

Метод словаря setdefault подобен методу get: он пытается получить значение по ключу, и если ключ отсутствует - создает его со значением по-умолчанию. Метод имеет следующий синтаксис:

dict.setdefault(key, default=None)

где key - ключ, который необходимо изменить/создать, а default - значение по умолчанию.

В обычной ситуации, чтобы создать словарь и выполнить определенные действия с ключами (которые могут повторяться), используется следующая конструкция:

new = {}
for (key, value) in data:
    if key in new:
        new[key].append( value )
    else:
        new[key] = [value]

Тут все просто и очевидно: в цикле проходимся по данным, проверяем наличие ключа в словаре и, если есть - обновляем, иначе - создаем. Используя setdefault все это можно сделать намного проще и компактнее:

new = {}
for (key, value) in data:
    group = new.setdefault(key, [])
    group.append( value )