在Python中有效地从CSV中删除重复项

时间:2011-07-28 18:21:05

标签: python csv performance

我正在努力有效地从相对较大(几百MB)的CSV文件中删除重复的行,这些文件没有以任何有意义的方式排序。虽然我有一种技术可以做到这一点,但这是非常强大的力量,我确信有一种优雅而有效的方式。

2 个答案:

答案 0 :(得分:2)

为了删除重复项,您必须拥有某种内存,告诉您之前是否看过一行。通过记住线条或者它们的校验和(几乎安全......) 任何像这样的解决方案都可能会产生“蛮力”的感觉。

如果你可以在处理它们之前对这些行进行排序,那么任务就相当容易,因为副本会彼此相邻。

答案 1 :(得分:1)

以下假设您从CSV获取的行最终作为列表列表。然后你必须决定你去重复的基础(即哪一列)在下面的例子中,它是第一列(x[0]

def dedup(seq):
""" De-duplicate a list based on the first member of the sublist
"""
seen = set()
seen_add = seen.add
return [x for x in seq if
    x[0] not in seen
    and not seen_add(x[0])]