首页 > 解决方案 > 如何将列表设置为具有相同序列的集合?(Python)

问题描述

我有一个用于蛮力攻击的文件,所以我想删除重复项以节省一些时间并将其复制到另一个文件中而不会破坏序列。我可以制作另一个列表并附加它,然后检查它是否在其中,但文件很大,所以我认为这不是最好的方法。我尝试的是:

with open('original_file.txt','r') as file:
   words = file.readlines()

with open('file_without_duplicates','w') as file:
   for i in set(words): file.write(i)

我在开头有最常用的单词,所以顺序很重要,但这个例子毁了它。

标签: python

解决方案


您仍然可以使用一组,但以不同的方式。

创建一个新的空集并使用它来跟踪已写入文件的单词。对于原始列表中的每个单词,如果它不在集合中,则将其写入文件并将其添加到集合中。

written_words = set()
with open('file_without_duplicates','w') as file:
    for i in words:
        if i not in written_words:
            file.write(i)
            written_words.add(i)

推荐阅读