Seite 1 von 1

Liste mit Tuple und doppelte Einträge (gelöst)

Verfasst: Mittwoch 17. Oktober 2007, 20:09
von Tompee
Hi,

bin noch ziemlich neu in Python und habe auch schon mein erstes Problem.
Ich habe z.B. folgende Liste:

Code: Alles auswählen

liste = [(15,100),(15,150),(14,333)]
Nun möchte ich, das wenn die erste Zahl in einem Tuple schon vorhanden ist, der Wert vom 2 Eintrag einfach adddiert wird zum schon existirenden.
Am Ende sollte also folgende Liste kommen:

Code: Alles auswählen

[(15,250),(14,333)]

Ich habe rausgefunden, das man mit set() doppelte Einträge aus Sequenzen löschen kann, aber ich glaube das hilft mir hier nicht weiter.

Hat vielleicht jemand ein Idee für mich?

Gruss Tompee

Verfasst: Mittwoch 17. Oktober 2007, 20:21
von Joghurt
Du kannst die Liste in eine Menge (Set) konvertieren und dann wieder zurück:

Code: Alles auswählen

liste = list(set(liste))
Aber bist du sicher, dass du nicht einfach nur ein Set haben willst? Operationen wie "in" sind in Mengen nämlich schneller, da nicht die ganze Liste durchsucht werden muss.

Verfasst: Mittwoch 17. Oktober 2007, 20:35
von Leonidas
Ich finde für sowas eignet sich ein Dict besser, da die Keys auch nur einmal Vorkommen dürfen und man an diese dann noch einen Wert anhängen kann:

Code: Alles auswählen

merged = dict()
for key, value in [(15, 100), (15, 150), (14, 333)]:
    merged[key] = merged.get(key, 0) + value
print merged
(ungetestet, aber es geht schon in etwa so)

Verfasst: Mittwoch 17. Oktober 2007, 20:41
von Tompee
Danke euch beiden. Funktioniert jetzt wunderbar.