2017-03-23 1 views
0

auf einem Schlüssel in einer Liste der Wörterbücher Wörterbücher erstellen bin ich auf die Python-Programmierung ziemlich neu. Ich möchte eine neue Liste der Wörterbücher name basierten Schlüssel erstellen. wenn name gleich Summe der id Wert.eine neue Liste von

a = [{'id': 1, 'name': 'paul'},{'id': 2, 'name': 'john'},{'id': 3, 'name': 'john'},{'id': 4, 'name': 'john'}] 

Neue Liste wäre wie:

new_a = [{'id': 1, 'name': 'paul'},{'id': 9, 'name': 'john'}] 

Vielen Dank im Voraus!

Antwort

1

wird auch tun, was Sie fragen, aber ich denke, eine andere Einrichtung von Datenstrukturen könnten in der Lage sein, es besser zu machen.

new_a = list() 
names_list = list() 
for el in a: 
    if el['name'] not in names_list: 
     new_a.append({'name':el['name'],'id':el['id']}) 
     names_list.append(el['name']) 
    else: 
     for new_el in new_a: 
      if el['name'] == new_el['name']: 
       new_el['id'] += el['id'] 
+0

Vielen Dank. Es klappt – user6136315

1

Sie könnten einen Counter dafür verwenden und dann einige Konvertierungen, wie:

from collections import Counter 

ctr = Counter() 
for dic in a: 
    ctr[dic['name']] += dic['id'] 
new_a = [{'name': name, 'id': id} for name,id in ctr.iteritems()]

Dies ergibt:

>>> new_a 
[{'name': 'paul', 'id': 1}, {'name': 'john', 'id': 9}] 

Beachten Sie, dass die Reihenfolge der Liste nicht bestimmt ist. Dieser Code

Verwandte Themen