2017-03-08 8 views
1
LIST=['insert_job: aaa', 'box_name: bbb', 'insert_job: ccc', 
     'box_name: ddd', 'insert_job: eee', 'insert_job: fff', 
     'box_name: ggg'] 

In oben aufgeführte Liste, wenn es zwei Dauer insert_job: ('insert_job: eee', 'insert_job: fff') ist dann will ich zuerst insert_job: drucken, die in diesem Fall insert_job: eee sein werden.vergleichen und extrahieren Strings aus der Liste in Python

+1

Verwenden Sie ein Wörterbuch – abccd

+0

bereits ein Wörterbuch namens 'list' – Gang

+3

@Gang Äh, ist es eine Liste. –

Antwort

1

Sie erreichen dies mit itertools.groupby

from itertools import groupby 

LIST = ['insert_job: aaa', 'box_name: bbb', 'insert_job: ccc', 
     'box_name: ddd', 'insert_job: eee', 'insert_job: fff', 
     'box_name: ggg'] 

for k, g in groupby(LIST, lambda s: s.split(':')[0]): 
    if k == 'insert_job': 
     items = list(g) 
     if len(items) > 1: 
      print(*items[:-1]) 
+0

Danke ShadowRanger, ich weiß nicht, warum ich es für mein Leben so gemacht habe. –

+0

Warum der Downvote? –

+0

@ - Steven Summers - Ich bin neu hier und gewöhnt mich immer noch mit verfügbaren Optionen, ich habe nicht realisiert, dass ich down Abstimmung gemacht habe, es war versehentlich, ich versuche es jetzt zu ändern, aber es funktioniert nicht. Aber ich wirklich schätzen Sie Ihre schnelle Antwort dafür und das ist genau das, was ich brauchte. – Frank

0

Da Sie die Reihenfolge der Elemente benötigen, benötigen Sie kein Wörterbuch. versuchen, etwas wie folgt

seen = 0 
for i in LIST: 
    if i.startswith("insert_job"): 
     if seen: 
      continue 
     else: 
      seen = 1 
      print i 
    else: 
     seen=0 
     # print i 
+1

Mutierende Listen während der Iteration werden unter vielen Umständen nicht korrekt funktionieren, und wiederholte Aufrufe von 'remove' bedeuten 'O (n ** 2)', wenn dies in 'O (n)' trivial lösbar ist. Dies zerstört auch Daten von der ursprünglichen "Liste", wenn das erklärte Ziel des OP das Filtern der Ausgabe ist, ohne dass angezeigt wird, dass die Daten verworfen werden sollten. – ShadowRanger

+0

richtig, er braucht keine Artikel zu entfernen –

+0

Ich stimme zu, Push an eine neue Liste ist nicht die beste Lösung, aber klarer – Gang

Verwandte Themen