habe ich eine Liste wie [('a',2),('a',3),('b',3),('c',2),('b',4)]
Summenwerte von als Schlüsselwertpaar in der Liste gespeicherten Tupeln von Schlüssel
Ich möchte alle ähnlichen Schlüssel summieren und erhalten [('a',5),('c',2),('b',7)]
in beliebiger Reihenfolge in Ordnung ist.
Gibt es einen besseren Weg, dies zu tun, anstatt ein Wörterbuch zu verwenden. Vorzugsweise etwas mit Liste Verständnis wie [i for j in a for ...]
>>> a = [('a',2),('a',3),('b',3),('c',2),('b',4)]
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for i,j in a:
... d[i] += j
...
>>> d
defaultdict(<type 'int'>, {'a': 5, 'c': 2, 'b': 7})
>>> zip(d.keys(),d.values())
[('a', 5), ('c', 2), ('b', 7)]
Gibt es Gründe, warum Sie wollen speziell _list comprehension_ verwenden? – JRodDynamite
@JRodDynamite Ich wollte den Code in Zeilen reduziert werden. Jemand möchte hier nicht viel Code sehen. Es nervt mich auch sehr. –
In Bezug auf Lesbarkeit scheint der Code, den Sie oben geschrieben haben, gut (beste Option, meiner Meinung nach). Vielleicht können Sie es in einer separaten Funktion schreiben, um diese Logik zu trennen. Es reduziert nur die Anzahl der Zeilen in der aktuellen Funktion. – JRodDynamite