如何在Python中的'in'语句中获取索引

时间:2014-02-03 22:25:06

标签: python

我写了一个if语句,如:

if word in vocab:
    print word

但是,我也想知道word中匹配的vocab索引。

Python中有什么方法可以做到这一点吗?

我刚刚提出了一个使用vocab.index(word)来获取索引的解决方案,但这种方式通过数组两次(一个在if语句中,一个调用index())。我想知道应该有更多的效率方法。

感谢。

4 个答案:

答案 0 :(得分:5)

要避免一个循环,您可以使用try-except子句(不使用if ... in ...:

try:
    i = vocab.index(word)
except ValueError as e:
    print e # Optional
    i = -1

答案 1 :(得分:2)

这是一个我希望我可以在if语句中进行赋值的情况,但我不能这样解决这个问题:

如果vocablist

try:
    index = vocab.index(word)
except ValueError:
    pass
else:
    print index, word

如果vocabstr

index = vocab.find(word)
if index >= 0:
    print index, word

答案 2 :(得分:2)

def getindex(iterable,target):
    for idx,value in enumerate(iterable):
        if value==target: return idx
    return -1

请注意,如果您尝试在字符串中查找子字符串,这将无法工作(正如我所假设的那样,因为您正在执行if word in vocab。在这种情况下,您确实应该这样做:

try: idx = iterable.index(target)
except ValueError as e: # Not found
    # Handle it

如果您尝试使用上面的getindex函数,它将始终返回-1任何值len(target) > 1,因为它会将您的iterable分解为最小的迭代,这是一个字母对于字符串。

答案 3 :(得分:1)

你应该看看蟒蛇enumerate

编辑:以下是一个例子:

for i, j in enumerate(vocab):
if j == word:
    print (i, j)