我们有大量数据,我们想对它们执行一些操作。删除重复项是主要操作之一。
例如
a,me,123,2631272164
yrw,wq,1237,123712,126128361
yrw,dsfswq,1323237,12xcvcx3712,1sd26128361
这是一个文件中的三个条目,我们要在第一列的基础上删除重复项。因此,应删除第 3 行。每行可能有不同数量的列,但我们感兴趣的列将始终存在。
内存操作看起来不可行。
另一种选择是将数据存储在数据库中并从中删除重复项,但这又不是一项简单的任务。 我应该遵循什么设计来将数据转储到数据库并删除重复项?
我假设人们一定遇到过这样的问题并解决了它。
我们通常如何解决这个问题?
PS:请将此视为现实生活中的问题而不是面试问题;)
最佳答案
如果键的数量也无法加载到内存中,则必须进行稳定(保留顺序)外部合并排序对数据进行排序,然后进行线性扫描以进行重复删除。或者您可以修改外部合并排序以在合并排序运行时提供重复消除。
我想因为这不是面试问题或者效率/优雅似乎不是问题(?)。编写一个 hack python 脚本,创建一个以第一个字段作为主键的表。解析这个文件,只将记录插入数据库,将插入包装到 try except 语句中。然后对表进行select *,解析数据,逐行写回文件。
关于algorithm - 从大文件中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10361007/