Python newb qui alla ricerca di qualche aiuto ...python lista di dit come unire chiave: valore dove i valori sono gli stessi?
Per un numero variabile di dicts in un elenco di pitone come:
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'},
]
Sto cercando di trovare il modo migliore per dicts di gruppo in cui il valore di chiave "id" è uguale, quindi aggiungere/merge qualsiasi unica chiave: valore e creare un nuovo elenco di dicts come:
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'},
]
Finora, ho capito come raggruppare i dicts nella lista con :
myList = itertools.groupby(list_dicts, operator.itemgetter('id'))
Ma sto lottando con il modo di costruire il nuovo elenco di dicts a:
1) Aggiungere le chiavi ei valori in più per la prima istanza dict che ha lo stesso "id"
2) Imposta il nuovo nome per le chiavi "item" e "price" (es "item1", "item2", "item3"). Questo mi sembra schifoso, c'è un modo migliore?
3) loop su ogni partita "id" per costruire una stringa per l'uscita successiva
ho scelto di restituire un nuovo elenco di dicts solo a causa della convenienza di passare un dict a una funzione di template in cui l'impostazione di variabili con una chiave descrittiva è utile (ci sono molte vars). Se c'è un modo più pulito e conciso per realizzare questo, sarei curioso di imparare. Ancora una volta, sono abbastanza nuovo in Python e nel lavorare con strutture di dati come questo.