2016-08-03 6 views
-4

Dies ist meine Liste:Operationen mit Elementen in der Liste der Liste in Python

volume = [['1.986', '3000'], ['1.987', '2000'], ['1.986', '700'],['1.987', '4000']] 

Wie kann ich die Summe des Volumens [1] erhalten, wenn Volumen [0] ist der gleiche Preis?

results = [['1.986', '3700'], ['1.987', '6000']] 
+0

Wissen Sie, was ein Wörterbuch tut? – Jasper

+0

Mögliches Duplikat von [Python Groupby-Anweisung] (http://stackoverflow.com/questions/15636008/python-groupby-statement) – TessellatingHeckler

Antwort

2

Wörterbücher wäre eine gute Datenstruktur hier zu verwenden. Das Standard-Dict enthält eindeutige Zeichenfolgen als Schlüssel und nimmt an, dass leere Werte 0 sind, weil ich festlege, dass es auf int basiert.

from collections import defaultdict 
d = defaultdict(int) 
for v in volume: 
    d[v[0]] += int(v[1]) 
print d 

Wenn Sie eine Liste danach benötigen, können Sie eine Liste Verständnis verwenden:

list_version = [[key, value] for key,value in d]

+2

Gute Antwort, danke. Ich würde das Tupel jedoch in der 'for'-Schleife auspacken:' für Preis, Menge in Volumen: ... ' – NPE

+0

Danke für nützliche Hilfe! – egariM