从大文件中删除重复项

ins*_*ect 1 algorithm file-io large-files

我们有大量数据,我们想对它们执行一些操作。删除重复项是主要操作之一。

前任。

a,me,123,2631272164
yrw,wq,1237,123712,126128361
yrw,dsfswq,1323237,12xcvcx3712,1sd26128361
Run Code Online (Sandbox Code Playgroud)

这是文件中的三个条目,我们希望在第一列的基础上删除重复项。因此,应删除第 3 行。每行可能有不同数量的列,但我们感兴趣的列将始终存在。

在内存中操作看起来不可行。

另一种选择是将数据存储在数据库中并从中删除重复项,但这也不是一项简单的任务。我应该遵循什么设计将数据转储到数据库并删除重复项?

我假设人们一定遇到过这样的问题并解决了它。

我们通常如何解决这个问题呢?

PS:请将此视为现实生活问题而不是面试问题;)

Jus*_*son 5

如果键的数量也无法加载到内存中,则必须执行稳定(保留顺序)外部合并排序来对数据进行排序,然后进行线性扫描来进行重复删除。或者,您可以修改外部合并排序,以在合并排序运行时提供重复消除。

我想因为这不是面试问题,或者效率/优雅似乎不是问题(?)。编写一个 hack python 脚本,创建 1 个表,其中第一个字段作为主键。解析该文件并将记录插入数据库,将插入包装到 try except 语句中。然后对表执行 select * ,解析数据并将其逐行写回文件。