如何在python中搜索字符串匹配后从列表中获取下一个元素

时间:2016-03-09 17:39:47

标签: python

嗨朋友我有一个列表,我在那里搜索字符串以及搜索字符串我想获得列表项的下一个元素。以下是示例代码

>>> contents = ['apple','fruit','vegi','leafy']
>>> info = [data for data in contents if 'fruit' in data]
>>> print(info)
['fruit']

我希望输出为 水果 VEGI

4 个答案:

答案 0 :(得分:4)

怎么样:

def find_adjacents(value, items):
    i = items.index(value)
    return items[i:i+2]

如果ValueError不在value中,您将免费获得items个例外情况:)

答案 1 :(得分:0)

这样做的一种方法是迭代自己压缩的列表。

调用zip(contents, contents[1:]),允许data变量在循环期间采用这些值:

('apple', 'fruit')
('fruit', 'vegi')
('vegi', 'leafy')

按此顺序。因此,当"水果"已匹配,data的值为('fruit', 'vegi')

考虑这个程序:

contents = ['apple','fruit','vegi','leafy']
info = [data for data in zip(contents,contents[1:]) if 'fruit' == data[0]]
print(info)

我们比较"水果"至data[0]data('fruit', 'vegi')时匹配。

答案 2 :(得分:0)

我可能会想到itertools ......

>>> import itertools
>>> contents = ['apple','fruit','vegi','leafy']
>>> icontents = iter(contents)
>>> iterable = itertools.dropwhile(lambda x: 'fruit' not in x, icontents)
>>> next(iterable)
'fruit'
>>> next(iterable)
'vegi'

请注意,如果您确实知道自己有完全匹配(例如'fruit' == data而不是'fruit' in data),那么这就变得更容易了:

>>> ix = contents.index('fruit')
>>> contents[ix: ix+2]
['fruit', 'vegi']

在这两种情况下,如果找不到匹配的元素,您需要指定应该发生的事情。

答案 3 :(得分:0)

这种直截了当的强制方法对我有用:

contents = ['apple', 'fruit', 'vegi', 'leafy']
result = '<no match or no successor>'
search_term = 'fruit'
for i in range(len(contents)-1):
   if contents[i] == search_term:
       result = contents[i+1]
print result

请注意,您没有指定行为应该是什么:1)没有找到搜索词,或2)在列表末尾找到匹配项。