2017-06-29 6 views
0

ich eine riesige Liste von Strings, wo ein paar Strings nur in zwei oder drei Zeichen wie diese unterscheiden:löschen Elemente aus der Liste basierend auf Teilzeichenfolge in Python

ENSH-DFFEV1-5F 
ENSH-DFFEV2-5F 
ENSH-DFFEV3-5F 
FVB.DFFVRV2-4T 
FVB.DFFVRV3-4T 

Was ich tun möchte, ist zu halten nur die Elemente, für die die Zahl nach dem 'V' am größten ist. Aus dem obigen Beispiel möchte ich haben

ENSH-DFFEV3-5F 
FVB.DFFVRV3-4T 

Gibt es eine einfache Möglichkeit, dies in Python zu tun?

+4

SO ist kein Code-Schreibdienst. Wir helfen bei * spezifischen * Codeproblemen. Bitte lesen Sie die [Hilfe] (https://stackoverflow.com/help). – stevieb

+0

Sind diese Elemente in der bestimmten Liste? Oder sie sind in Datei? – ShellRox

+0

sind sie immer gruppiert wie in Ihrem Beispiel? – jacoblaw

Antwort

1

@stevieb hat Recht, aber trotzdem habe ich mir die Mühe gemacht.

s = """ 
ENSH-DFFEV1-5F 
ENSH-DFFEV2-5F 
ENSH-DFFEV3-5F 
FVB.DFFVRV2-4T 
FVB.DFFVRV3-4T 
""".split() 

def custom_filter(s): 
    out = [] 
    current_max = -1 
    for r in s: 
     v = int(r.rsplit('-', 1)[0][-1]) # <- you should probably edit this line to fit your data structure 
     if v > current_max: 
      current_max = v 
      out = [] 
     if v == current_max: 
      out += [r] 
    return out 

for e in custom_filter(s): 
    print e 
Verwandte Themen