Python: Liste verkleinern?
Hey kleines Problem, vielleicht weiß ja wer was man tun muss:
Gegeben sei eine Liste:
A=['a-4_2.jpeg','a-4_1.jpeg','a-6_1.jpeg']
Die Liste soll ausgedünnt werden, sodass a-4_1.jpeg wegfällt, da ja eine a-4_2.jpeg bereits existiert.
Die Zielliste ist also:
A=['a-4_2.jpeg','a-6_1.jpeg']
1 Antwort
Um die Liste auszudünnen und nur die Dateien mit der höchsten Nummer beizubehalten, kannst du folgenden Code verwenden:
# Ausgangsliste
A = ['a-4_2.jpeg', 'a-4_1.jpeg', 'a-6_1.jpeg']
# Dictionary erstellen, das die höchste Nummer für jede eindeutige Dateibezeichnung speichert
num_dict = {}
for file in A:
key = file.split('_')[0] # extrahiere Dateibezeichnung (alles vor '_')
num = int(file.split('_')[1].split('.')[0]) # extrahiere Nummer (alles nach '_' bis vor '.')
if key not in num_dict or num > num_dict[key]:
num_dict[key] = num
# Neue Liste erstellen, die nur die Dateien mit der höchsten Nummer enthält
new_A = [key + '_' + str(num) + '.jpeg' for key, num in num_dict.items()]
# Ausgabe
print(new_A) # gibt ['a-4_2.jpeg', 'a-6_1.jpeg'] aus
Hier wird zuerst ein Dictionary erstellt, das für jede eindeutige Dateibezeichnung die höchste Nummer speichert. Dann wird eine neue Liste erstellt, die nur die Dateien mit der höchsten Nummer enthält.
Woher ich das weiß:Berufserfahrung – Über 10 Jahre im Beruf.
@HagbardCeline88
klappt wunderbar danke, wobei mir das mit dem dictionary noch etwas unverständlich ist :( konnte es aber gut in meinen code integrieren :)
Danke ich probier das gleich mal aus; zerbreche mir die ganze Zeit schon den Kopf. Dictionary ist also das Zauberwort hm. Oki danke :) Ich schau mal obs funktioniert und geb dann Rückmeldung :)