Поместите обе коллекции в морозильное устройство.
небольшой тест производительности:
import random
from timeit import Timer
def random_strings(size):
alpha = 'abcdefghijklmnopqrstuvwxyz'
min = 3
max = 8
strings = []
for count in xrange(1, size):
current = ''
for x in random.sample(alpha, random.randint(min,max)):
current += x
strings.append(current)
return strings
string_list_1 = random_strings(10000)
string_list_2 = random_strings(10000)
def string_test():
common = filter(lambda x: x in string_list_2, string_list_1)
return common
def set_test():
string_set_1 = frozenset(string_list_1)
string_set_2 = frozenset(string_list_2)
common = string_set_1 & string_set_2
return common
string_timer = Timer("__main__.string_test()", "import __main__")
set_timer = Timer("__main__.set_test()", "import __main__")
print string_timer.timeit(10)
# 22.6108954005
print set_timer.timeit(10)
# 0.0226439453
Как видите, набор экспоненциально быстрее.Должен работать лучше, чем словарь.
Важно отметить, что я включил время, необходимое для изготовления наборов.Эти накладные расходы также влияют на вашу производительность, но за исключением того, что один набор намного меньше другого, вы получите большой выигрыш.