2017-06-29 85 views
0

我有一個巨大的字符串列表,其中一對夫婦的字符串僅在2個或三個字符不同像這樣從列表中的元素:刪除基於子在Python

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

我想什麼做的是保持只有那些「V」之後的數字最大的元素。從上面的例子我想有

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

有沒有一種簡單的方法來在Python中做到這一點?

+4

SO不是代碼寫入服務。我們幫助*特定*代碼問題。請閱讀[幫助中心](https://stackoverflow.com/help)。 – stevieb

+0

這些元素是否在某個列表中?或者他們位於文件? – ShellRox

+0

它們是否總是像你的例子一樣分組? – jacoblaw

回答

1

@stevieb是對的,但無論如何,我爲你付出了努力。

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