python - 如何将列表设置为具有相同序列的集合?(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)
我在开头有最常用的单词,所以顺序很重要,但这个例子毁了它。
解决方案
您仍然可以使用一组,但以不同的方式。
创建一个新的空集并使用它来跟踪已写入文件的单词。对于原始列表中的每个单词,如果它不在集合中,则将其写入文件并将其添加到集合中。
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)
推荐阅读
- ios12 - iOS Xcode 10 如何修复损坏的“新构建系统”-build.db:数据库被锁定可能有两个并发构建
- flutter - 如何在 Flutter 中延迟 SnackBar
- javascript - Uncaught SyntaxError: Unexpected token in import React from 'react'
- mysql - MAMP:MySQL 未启动(无法打开 Windows 事件日志)
- python - scipy.optimize.curve_fit:max_nfev 的默认值坏了?
- json.net - 在 Visual Studio 扩展中包含 Json.NET
- entity-framework-core - EF Core 2.2 急切加载导航属性相关数据问题
- ios - UIApplicationShortcutItem 未显示基于 Info.plist
- node.js - JSON 输入意外结束 - 使用 putState() 时的 Hyperledger Fabric
- java - JAVA,用String.format对同一个变量进行n次插值