Python 3.8 Listenvergleich beschleunigen
Verfasst: Donnerstag 27. Januar 2022, 13:55
Hallo zusammen,
zuallererst sei erwähnt, ich bin kein Python-Profi.
Daher bräuchte ich eure Hilfe.
Ich habe zwei Listen von anderen Abfragen/Erzeugung.
Jetzt möchte ich nur die kompletten Strings aus "str_sql_tmp" rausfiltern, welche in teilen mit "fk_exists" übereinstimmen.
Ich habe folgendes gemacht:
Das funktioniert so wie ich es möchte.
Allerdings enthalten die Listen rund 250.000 und rund 600.000 Einträge, wodurch der Vergleich sehr lange läuft.
Gibt es eine Möglichkeit, dies zu beschleunigen?
zuallererst sei erwähnt, ich bin kein Python-Profi.

Daher bräuchte ich eure Hilfe.
Ich habe zwei Listen von anderen Abfragen/Erzeugung.
Jetzt möchte ich nur die kompletten Strings aus "str_sql_tmp" rausfiltern, welche in teilen mit "fk_exists" übereinstimmen.
Ich habe folgendes gemacht:
Code: Alles auswählen
str_sql_tmp = [ "('R0001e5e7','C000219c0',st_geometryfromtext('POLYGON((1.0 2.0,2.0 2.0,2.0 1.0,1.0 1.0,1.0 2.0))'))",
"('R0001e5e8','C000219c6',st_geometryfromtext('POLYGON((2.0 3.0,3.0 3.0,3.0 2.0,2.0 2.0,2.0 3.0))'))",
"('R0001e5e9','C000219c2',st_geometryfromtext('POLYGON((3.0 4.0,4.0 4.0,4.0 3.0,3.0 3.0,3.0 4.0))'))"]
### normaly over 600.000 entries
fk_exists = ['R0001e5e7/C000219c0', 'R0001e5e9/C000219c2']
### normaly over 250.000 entries
str_sql = []
for x in str_sql_tmp:
if x[2:23].replace("','", "/") in fk_exists:
str_sql.append(x)
Allerdings enthalten die Listen rund 250.000 und rund 600.000 Einträge, wodurch der Vergleich sehr lange läuft.
Gibt es eine Möglichkeit, dies zu beschleunigen?