2017-06-29 84 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