Python Novato aquí en busca de un poco de ayuda ...lista de Python de los dictados cómo fusionar la clave: valor donde los valores son los mismos?
Para un número variable de dicts en una lista de Python como:
list_dicts = [
{'id':'001', 'name':'jim', 'item':'pencil', 'price':'0.99'},
{'id':'002', 'name':'mary', 'item':'book', 'price':'15.49'},
{'id':'002', 'name':'mary', 'item':'tape', 'price':'7.99'},
{'id':'003', 'name':'john', 'item':'pen', 'price':'3.49'},
{'id':'003', 'name':'john', 'item':'stapler', 'price':'9.49'},
{'id':'003', 'name':'john', 'item':'scissors', 'price':'12.99'},
]
Estoy tratando de encontrar la mejor manera de dicts grupo donde el valor de la tecla "id" es igual, a continuación, añadir/fusionar cualquier tecla único: valor y crear una nueva lista de dicts como:
list_dicts2 = [
{'id':'001', 'name':'jim', 'item1':'pencil', 'price1':'0.99'},
{'id':'002', 'name':'mary', 'item1':'book', 'price1':'15.49', 'item2':'tape', 'price2':'7.99'},
{'id':'003', 'name':'john', 'item1':'pen', 'price1':'3.49', 'item2':'stapler', 'price2':'9.49', 'item3':'scissors', 'price3':'12.99'},
]
hasta ahora, he descubierto la manera de agrupar los dicts en la lista con :
myList = itertools.groupby(list_dicts, operator.itemgetter('id'))
Pero estoy luchando con la forma de construir la nueva lista de dicts a:
1) Añadir las claves y valores adicionales a la primera instancia dict que tiene el mismo "id"
2) Establezca el nuevo nombre para las teclas "item" y "price" (p. Ej. "item1", "item2", "item3"). Esto me parece torpe, ¿hay una mejor manera?
3) bucle sobre cada partido "id" para construir una cadena para la salida tarde
que he elegido para devolver una nueva lista de dicts sólo por la conveniencia de pasar un diccionario a una función de plantillas donde Establecer variables con una clave descriptiva es útil (hay muchos vars). Si hay una manera más limpia y concisa para lograr esto, me gustaría aprender. De nuevo, soy bastante nuevo en Python y en el trabajo con estructuras de datos como esta.