Hallo zusammen,
ich habe 2 Listen eine Zeile der Liste sieht in etwa so aus:
Liste 1: (2112;17480;bcabab:ab ...)
Liste 2: (2112;17480;02;ab.aba.aba.ab ...)
nun möchte ich die beiden Listen zu einer Liste vereinen.
Dabei spielt die Nummer an 2. Stelle (17480) die Hauptrolle.
Diese ist in jeder Liste einzigartig.
Ich möchte also die Einträge aus Liste 2 welche mit der Nummer(17480) aus Liste 1 übereinstimmen in Liste 1 einfügen.
Sprich meine Liste 1 soll so aussehen:
Liste 1: (2112;17480;bcabab:ab;02;ab.aba.aba.ab ...)
Mfg
Inhalt von 2 Listen zu einer Liste zusammenfügen (Matchen?)
Welches Datenformat hast du denn tatsächlich vorliegen? Du redest von einer Liste, aber anscheinend meinst du damit nicht den Python-Datentyp list. Ich nehme an, dass es sich um Strings handelt, die erst noch in eine Liste - oder eine andere geeignete Datenstruktur - konvertiert werden müssen.
Und was ist mit dem ersten Eintrag? Du hast nur den zweiten Eintrag als eindeutiges Kriterium benannt. Was machst du mit dem ersten Eintrag bei Abweichungen?
Gesetzt den Fall, dass Eintrag 1 auch immer identisch ist, könnte ich mir so etwas vorstellen:
Und was ist mit dem ersten Eintrag? Du hast nur den zweiten Eintrag als eindeutiges Kriterium benannt. Was machst du mit dem ersten Eintrag bei Abweichungen?
Gesetzt den Fall, dass Eintrag 1 auch immer identisch ist, könnte ich mir so etwas vorstellen:
Code: Alles auswählen
import collections
pool = [
"2112;17480;bc:ab:ab:ab:ab:ab ...",
"2112;17480;02;ab.aba.aba.ab ..."
]
data = [line.split(';') for line in pool]
print(data)
gatherer = collections.defaultdict(list)
for elements in data:
gatherer[(elements[0], elements[1])].extend(elements[2:])
print(gatherer)
Zuletzt geändert von /me am Dienstag 2. Juli 2013, 10:29, insgesamt 1-mal geändert.
Der erste Eintrag(2112) ist irrelevant den brauche ich später nicht mehr ist wohl eine ID die erzeugt wird.
Liste 1: (2112;17480;bcabab:ab;02;ab.aba.aba.ab ...)
Nur der fette und unterstrichene Teil ist wichtig.
Ich bekomme diesen später von einer Datenbank aber für das momentane Bsp habe ich die Daten, welche ich normalerweise vom Server erhalte in einem Text-File gespeichert um den Server nicht unnötig zu belasten.
Soweit mal mein bisheriger Code der eig. nicht viel macht.
Ich lese die Daten ein und gib diese gesplittet aus.
Das Ergebnis das ich dann erhalte möchte ich wiederum in eine Datenbank schreiben.
In der Datenbank sind bereits Daten und ich möchte die neuen Einträge nur hinzufügen falls sich etwas ändert.
Liste 1: (2112;17480;bcabab:ab;02;ab.aba.aba.ab ...)
Nur der fette und unterstrichene Teil ist wichtig.
Im Endeffekt einen String aber wenn ich das richtig verstandenhabe erhalte ich beim einlesen eine Liste.Welches Datenformat hast du denn tatsächlich vorliegen?
Ich bekomme diesen später von einer Datenbank aber für das momentane Bsp habe ich die Daten, welche ich normalerweise vom Server erhalte in einem Text-File gespeichert um den Server nicht unnötig zu belasten.
Soweit mal mein bisheriger Code der eig. nicht viel macht.
Ich lese die Daten ein und gib diese gesplittet aus.
Code: Alles auswählen
get_pppoe_all = open("C:\\Dokumente und Einstellungen\\fddfga\\Desktop\\get_pppoe_all.txt").readlines()
get_pppoe_detail = open("C:\\Dokumente und Einstellungen\\fddfga\\Desktop\\get_pppoe_detail.txt").readlines()
for i in xrange(len(get_pppoe_all)):
print get_pppoe_all[i].split(';')
print get_pppoe_detail[i].split(';')
In der Datenbank sind bereits Daten und ich möchte die neuen Einträge nur hinzufügen falls sich etwas ändert.
@Dittrich: Das mit dem Index ist ein wenig „unpythonisch”. Da würde man eher `zip()` beziehungsweise `itertools.zip()` verwenden.