У меня есть коллекция, которая выглядит следующим образом:Какой самый чистый (самый Pythonic) способ создания словаря со значениями списка из последовательности?
stuff = [('key1', 1), ('key2', 2), ('key3', 3),
('key1', 11), ('key2', 22), ('key3', 33),
('key1', 111), ('key2', 222), ('key3', 333),
]
# Note: values aren't actually that nice. That would make this easy.
Я хочу, чтобы превратить его в словарь, который выглядит следующим образом:
dict_stuff = {'key1': [1, 11, 111],
'key2': [2, 22, 222],
'key3': [3, 33, 333],
}
Что самый хороший способ преобразовать эти данные? Первый метод, который приходит на ум, заключается в следующем:
dict_stuff = {}
for k,v in stuff:
dict[k] = dict.get(k, [])
dict[k].append(v)
Это самый чистый способ сделать это?
если 'stuff' гарантировалась быть отсортированы по "ключ", я хотел бы использовать' itertools.groupby'. Поскольку кажется, что это не так, 'collections.defaultdict', вероятно, будет вашим лучшим лучшим выбором (как показано в ответах) – mgilson