Code: Alles auswählen
old = ["eins", "zwei", "drei", "veer"]
new = ["eins", "drei", "vier"]
Code: Alles auswählen
eins
- zwei
drei
- veer
+ vier
Ich könnte auf difflib.ndiff(old, new) zurück greifen. Damit würde ich mein Ziel schon näher kommen:
Code: Alles auswählen
diff = []
for line in difflib.ndiff(old, new):
if line and not line.startswith("?"):
diff.append(line)
print "\n".join(diff)
Aber ich habe nicht wirklich Strings zu vergleichen und würde die Info eingefügt/gelöscht/gleich lieber als "Attribut" haben...
Also ich hab ehr sowas:
Code: Alles auswählen
old = ["<obj 'eins'>", "<obj 'zwei'>", "<obj 'drei'>", "<obj 'veer'>"]
new = ["<obj 'eins'>", "<obj 'drei'>", "<obj 'vier'>"]
Code: Alles auswählen
[<obj 'eins'>,
<obj 'zwei'>,
<obj 'drei'>,
<obj 'veer'>,
<obj 'vier'>]
Mit set(old).union(set(new)) hätte ich schon mal eine Liste mit allen zusammen. Über diese könnte ich iterieren und dann nachsehen, welche in old und new vorkommt und dann die Attribute hinzufügen. Aber das dumme, die Sortierung ist unschön:
Code: Alles auswählen
<obj 'drei'>
<obj 'eins'>
<obj 'vier'>
<obj 'zwei'>
<obj 'veer'>