múltiples valores en un diccionario python

Tengo datos en el siguiente formulario (guardado en una lista)

id, price, date, category 

Ahora, básicamente quiero separar los elementos según la categoría … básicamente un diccionario donde la clave es la categoría y el rest de las cosas (id, precio, datos) son sus valores. Ya he creado una estructura de datos, así que permite que un elemento “datastructre” tiene los cuatro atributos mencionados anteriormente (id, precio, fecha, categoría) Así que básicamente lo que quiero es un diccionario en la siguiente forma:

 {1: [item_1,item_2....], 2:[item....]} 

¿Cómo hago esto? Ya que hay muchos valores en una sola clave, sé que usará defaultdict … pero todavía no puedo solucionar esto. Gracias

Creo que quieres algo como esto, asumiendo que tus datos actuales están almacenados en la lista list_data :

 dict_data = defaultdict(list) for item in list_data: dict_data[item.category].append(item) 

Si cada elemento es una tupla en lugar de un objeto, use el item[3] lugar de item.category .

 output = defaultdict(list) for item, cat in ((x[:-1], x[-1]) for x in data): output[cat].append(item) 

o, sin defaultdict:

 output = {} for item, cat in ((x[:-1], x[-1]) for x in data): output.setdefault(cat, []).append(item) 

Ejemplo de salida:

 >>> data = [ ... (1, 123, "somedate", "boy"), ... (3, 435, "anotherdate", "boy"), ... (23, 123, "moredate", "girl"), ... ] >>> output = {} >>> for item, cat in ((x[:-1], x[-1]) for x in data): ... output.setdefault(cat, []).append(item) ... >>> print output {'boy': [(1, 123, 'somedate'), (3, 435, 'anotherdate')], 'girl': [(23, 123, 'moredate')]} 

Una forma de hacerlo sería tener un diccionario donde cada valor es una lista de elementos (id, precio, fecha) y la clave es la categoría.

Algo parecido a lo siguiente, donde d es un diccionario, c es una categoría y itm es una tupla / elemento:

 def insert(d, c, itm): if not c in d: d[c] = [itm] else: d[c].append(itm)