gpt4 book ai didi

python - 在包含 200 万个项目的列表中搜索项目 - Python

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:19 25 4
gpt4 key购买 nike

我有一个由1.9-2 百万个项目组成的字符串列表。

以下代码:

items = [...]
item_in_list = items[-1] in items

需要 0.1 秒

使用 sqlite3 需要 0.7 秒


现在问题是我需要执行此检查 100 万次,我想在几分钟内而不是几天内完成。

更准确地说,我正在尝试将 CSV 文件的内容与数据库中的计算值同步。


有什么想法吗?真的很棒 :)

最佳答案

将两个集合放入 frozensets。

小性能测试:

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

如您所见,set 的速度呈指数级增长。性能也应该比字典好。

值得注意的是,我包括了制作布景所需的时间。这种开销也会影响您的性能,但除了一组比另一组小得多之外,您将获得很大的 yield 。

关于python - 在包含 200 万个项目的列表中搜索项目 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4453092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com