Преобразование списка с повторными ключами в словарь списков

У меня есть list ассоциаций с повторяющимися ключами:

 l = [(1, 2), (2, 3), (1, 3), (2, 4)] 

и я хочу, чтобы dict со значениями list :

 d = {1: [2, 3], 2: [3, 4]} 

Могу ли я сделать лучше, чем:

 for (x,y) in l: try: z = d[x] except KeyError: z = d[x] = list() z.append(y) 

2 Solutions collect form web for “Преобразование списка с повторными ключами в словарь списков”

Вы можете использовать метод dict.setdefault() для предоставления пустого списка по умолчанию для отсутствующих ключей:

 for x, y in l: d.setdefault(x, []).append(y) 

или вы можете использовать объект defaultdict() для создания пустых списков для отсутствующих ключей:

 from collections import defaultdict d = defaultdict(list) for x, y in l: d[x].append(y) 

но чтобы отключить поведение автообмена, вам нужно установить атрибут default_factory в None :

 d.default_factory = None # switch off creating new lists 

Вы можете использовать collections.defaultdict :

 d = collections.defaultdict(list) for k, v in l: d[k].append(v) 
  • Как создать список Python lambdas (в понимании списка / для цикла)?
  • Создание словаря со списком в Python
  • список лямбда-функций python без частичного
  • Как подсчитать не 0 элементов в истребителе?
  • Python вложенное понимание dict с наборами
  • Python: выход Dict элементов в производстве Corouts?
  • Python - просмотр списка с 2 для циклов и операндом ДОБАВИТЬ И
  • Перечислить понимание списка диктата dict?
  • Почему результаты отображения карты () и списка различны?
  • Список индексов повторяющихся значений в списке с помощью Python
  • лямбда-функция в сортированном понимании словарного знака
  •  
    Interesting Posts for Van-Lav

    ImportError: нет модуля с именем _io в ubuntu 14.04

    В Python я могу предотвратить функцию отвлечения KeyboardInterrupt и SystemExit?

    Python: изменить глобальный список внутри функции

    Проверьте, присутствует ли атрибут в теге в BeautifulSoup

    python или bash – добавление «в начале строки и», в конце строки

    Python ftplib отключается

    Получить один контакт с python gdata.contacts.client

    Как реализовать C-like unsigned int 32 в Python без внешних зависимостей?

    Создание макетов для неповторимых списков в столбцы в Python

    как экспортировать таблицу данных в pyspark в csv?

    Почему этот код Python работает дважды?

    Графическое отображение в реальном времени D3: сдвинуть данные справа и сдвига, поскольку длина данных превышает предельный переход, не работает

    Keras ValueError: операция ввода-вывода в закрытом файле

    Как использовать scikit-learn PCA для уменьшения возможностей и знать, какие функции отбрасываются

    Использование numpy.median для маскированного массива

    Python - лучший язык программирования в мире.