对于Python,我相对比较天真,所以对于任何不相关的语句,我深表歉意。在
我有一个CSV文件,大约有500k行,我正在处理。(约60 MB)
当我读入文件时,我需要做一些基本的清理,这很好,但我还需要将CSV的每一行与同一文件的其他行进行比较。最初,我加载了文件并将其存储在一个列表中,然后循环两次以比较行。这可能是个愚蠢的方法,因为我很快就耗尽了记忆。看起来像这样:
for row in self.trainingdata:
for row2 in self.trainingdata:
# Do Stuff
我的问题是,什么是最节省内存的方法?我是否应该打开同一个文件两次,然后比较每一行?或者有更好的方法来存储数据吗?我正在寻找一些关于什么是最佳方法的高级指导。我目前的想法如下,但我还没有完成:
^{pr2}$谢谢你的帮助!在
正如@Padraic指出的,这个文件不够大,不必担心内存不足。关于执行您想要的操作的最佳方法是使用字典,如下面的代码示例所示:
其中parts[0]只是行中的一个随机部分,用于标识唯一性,您可以使用任何条件作为字典的键
你在用unix吗?那么
sort -u
呢,或者如果只需要根据某个列值sort -t',' -k1,1 -u
进行uniquize呢?当文件增长时,添加类似-S500MB
的内容来保持RAM中的排序。。。在相关问题 更多 >
编程相关推荐