【问题标题】:Finding duplicates in multiple HUGE lists in Python (compare 2, 3, 4, 5 lists)在 Python 中的多个 HUGE 列表中查找重复项(比较 2、3、4、5 个列表)
【发布时间】:2018-06-29 10:50:52
【问题描述】:

所以我目前正在编写 5 部词典,未来可能还会更多,每部至少有 257000 多个词条。将它们视为 5 个巨大的文本文件(大小:10-20 Mb),例如每行 10-30 个字符就可以了。 条目示例如下:

abaissements volontaires,abaissement volontaire.N+NA:mp

我的任务是找出不同词典之间的重复单词。 因此,首先,我必须处理文件以仅获取示例中的 abaissements volontaires。在这部分之后,我的想法是有一个包含以下元素的列表:

dict_word_list = [[dict_A, [word1, word2, ...]], [dict_B, [word1, word2, ...]]]

选择list而不是dict只是因为dict在Python中是无序的,我必须知道每个单词列表对应的字典名称,所以我把对应的字典名称放在每个列表的元素0中。

我的问题是如何找出这些庞大列表之间的重复项,同时保留字典名称? 我尝试了如果不在列表中,但由于文件大小和非常旧的处理器(工作中一台破旧的笔记本电脑中的英特尔酷睿 i3,我无法使用自己的笔记本电脑由于机密性问题),该程序只是在那里出现错误。

也许 set 会是一个解决方案,但我该如何打乱比较?我想要这样的结果:

重复 dict_A, dict_B: [word1, word2, word3, ...]

重复 dict_B, dict_C: [word1, word2, word3, ...]

重复 dict_A、dict_B、dict_C:[word1、word2、word3、...]

【问题讨论】:

  • 可以先对文件进行排序吗?这会让事情变得更容易吗?

标签: python list nlp set


【解决方案1】:

集合是一个非常好的方法。你可以这样做:

dict_1 = {1, 2 ,3}
dict_2 = {2, 3, 4}
dict_3 = {3, 4, 5}
dict_1 & dict_2
{2, 3}
dict_1 & dict_2 & dict_3
{3}

来自文档:

s & t - 包含 s 和 t 共有元素的新集合

【讨论】:

  • 我想我要测试 from itertools import combination 以获得不同的组合并使用 set 看看性能是否还不错。 :)
  • 完成测试后发布结果 :)
  • 集合的性能远优于列表。我得到了我想要的,谢谢!
猜你喜欢
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多