“怎么说?”;在;python工作中的关键字?有没有更快的办法?

“怎么说?”;在;python工作中的关键字?有没有更快的办法?,python,Python,我是一个编程新手,我在玩一些大数据(yelp+评论)举一个简单的例子,我想在文本中找到一个单词,所以基本上我试着遍历所有这些数据,在这些评论中找到一个单词,在触发之前,我知道这是最糟糕的方法,但后来我用nltk对数据进行预处理,将评论放在一个列表中,并使用“in”关键字检查列表中的单词,它要快得多,所以我的问题是什么使“in”关键字更快?除了改进预处理部分,还有更快的方法吗 编辑1(以下是示例代码): 首先,我将评论标记化,e.x“这个地方很好”变成[“这个”、“地方”、“是”、“好”] 然后我

我是一个编程新手,我在玩一些大数据(yelp+评论)举一个简单的例子,我想在文本中找到一个单词,所以基本上我试着遍历所有这些数据,在这些评论中找到一个单词,在触发之前,我知道这是最糟糕的方法,但后来我用nltk对数据进行预处理,将评论放在一个列表中,并使用“in”关键字检查列表中的单词,它要快得多,所以我的问题是什么使“in”关键字更快?除了改进预处理部分,还有更快的方法吗

编辑1(以下是示例代码):

首先,我将评论标记化,e.x“这个地方很好”变成[“这个”、“地方”、“是”、“好”]

然后我检查列表中是否有某个字符串

if(contents[i] in list_of_targeted_words): return 1
这似乎比使用for循环更快

if(contents[i] == list_of_targeted_words[j]): return 1

本身并不快;它只是类可以定义的
\uuuuu包含的\uuuu
方法的公共部分<代码>列表。_包含
是一个O(n)操作,因为它必须遍历整个列表以查找匹配项

# a in my_list
for x in my_list:
    if x == a:
        return True
return False
dict.\uuu contains\uu
速度很快,因为它只需要在
dict
值中执行O(1)查找

# a in my_dict
try:
     my_dict[a]
     return True
 except KeyError:
     return False
其他类可以根据需要定义
\uuuuu包含
。考虑一个表示二进制搜索树的类:

class BST:
    # You should be able to infer enough of the structure of the tree
    # from this definition.
    def __contains__(self, x):
        node = self.root
        while node is not None:
            if node.value == x:
                return True
            elif node.value < x:
                node = node.right
            else:
                node = node.left
        return False
BST级:
#你应该能够推断出足够的树的结构
#根据这个定义。
def___;包含______;(self,x):
node=self.root
当节点不是“无”时:
如果node.value==x:
返回真值
elif node.value

最重要的是,它不会对整个树进行O(n)遍历以查找
x
;相反,它从根开始向下走O(lgn)。

欢迎来到堆栈溢出。为了帮助您理解某些代码是如何工作的,我们需要首先查看代码。请向我们展示一个简短的示例,说明您的问题,我们可以从中提供帮助。相关:请注意,正如此链接所解释的,
中的
对不同类型的数据有不同的作用。它不是在评论中搜索,而是将单词与列表中存储的整个评论进行比较。b中
a的内部工作在很大程度上取决于
类型(b)
。对于您的列表,它大致可以归结为
any(a==x代表b中的x)
@code学徒我添加了一个示例代码我想我可以尝试dict._包含u方法并检查差异,感谢您的澄清“try”是什么意思?要么你有一个
dict
,要么你没有;你不能应用
dict.\uuu包含\uuu
到一个不是
dict
的对象。我想先用评论来创建字典,而不是创建一个列表。注意,我将此注册为一个答案,因为当我使用字典来搜索列表时,代码现在要快得多,谢谢你的帮助!如果有人有任何类似的问题,请让我知道我会与您共享代码。
class BST:
    # You should be able to infer enough of the structure of the tree
    # from this definition.
    def __contains__(self, x):
        node = self.root
        while node is not None:
            if node.value == x:
                return True
            elif node.value < x:
                node = node.right
            else:
                node = node.left
        return False