gpt4 book ai didi

python - 比较python中的两个大列表

转载 作者:太空狗 更新时间:2023-10-29 17:06:47 24 4
gpt4 key购买 nike

我有一个包含大约 400 个单词的列表。还有一个列表列表,其中每个列表包含大约 150,000 个单词。这个列表有 20 个这样的列表。

现在我想看看这 400 个单词中有多少出现在所有这 150,000 个单词列表中。我还想知道这 400 个单词中的一个单词,在 150k 单词列表中出现了多少次,这些单词中出现最多的单词,出现了多少次等等。

我能想到的唯一解决方案是多项式时间解决方案。这是一个非常糟糕的解决方案,而且会非常慢:

for one_list in list_of_150kwords:
for key in 400_words:
for word in one_list:
if key == word:
# count this word
# do other stuff

这是一个非常丑陋和糟糕的解决方案,但我想不出更好的解决方案。我通过将这些列表转换为 NumPy 数组对 NumPy 进行了同样的尝试:

list_of_150kwords = numpy.array(list_of_150kwords)
...

但是我还是觉得很慢。还有其他解决方案吗?或者任何图书馆?

最佳答案

这听起来像是使用 set 的好机会:

set_of_150kwords = set(list_of_150kwords)
one_set = set(one_list)

len(one_set & set_of_150kwords) # set intersection is &
=> number of elements common to both sets

根据集合论,两个集合的交集给出出现在两个 集合中的元素,然后取它的长度就很简单了。对于第二部分(这些词中哪些出现次数最多,出现了多少次等)创建一个 Counter使用 list_of_150kwords,它会告诉您每个单词在列表中出现的次数。交集会告诉你哪些是常用词,解决你的两个需求。

关于python - 比较python中的两个大列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21801616/

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