检查项目是否在列表中的最快方法 - Python

时间:2016-12-27 00:15:16

标签: python python-2.7 list python-3.x

我在python中制作单词词汇时遇到问题。我的代码遍历大约2.3MB的文档中的每个单词并检查该单词是否在字典中,如果不是,则附加到列表中

问题是,它已经取消了很长时间(我还没有完成它)。我该如何解决这个问题?

代码:

words = [("_", "hello"), ("hello", "world"), ("world", "."), (".", "_")] # List of a ton of tuples of words
vocab = []
for w in words:
    if not w in vocab:
        vocab.append(w)

2 个答案:

答案 0 :(得分:4)

除非您需要vocab才能获得特定订单,否则您可以执行以下操作:

vocab = set(words)

答案 1 :(得分:1)

以下是比较for循环和set()的执行时间的测试:

import random
import time
import string


words = [''.join(random.sample(string.letters, 5)) for i in range(1000)]*10  # *10 to make duplicates!

vocab1 = []

t1 = time.time()
for w in words:
    if w not in vocab1:
        vocab1.append(w)
t2 = time.time()

t3 = time.time()
vocab2 = set(words)
t4 = time.time()

print t2 - t1
print t4 - t3

<强>输出:

0.0880000591278  # Using for loop
0.000999927520752  # Using set()