<p>根据你给我们看的例子,你的文件格式是N行描述,然后是N行DNA序列。这个答案假设每个描述或DNA序列都是一行,并且序列和描述一样多。你知道吗</p>
<p>如果你能轻松地把所有的东西都放在记忆中,那么我能想到的最简单的方法就是按照上面<a href="https://stackoverflow.com/users/948550/reut-sharabani">Reut Sharabani</a>的建议开始:</p>
<pre><code>with open('file_path', 'r') as f:
# used strip() to remove '\n'
lines = [line.strip() for line in f]
</code></pre>
<p>一旦有了<code>lines</code>,就很容易创建两个列表,将它们压缩,然后创建一个<code>dict</code>:</p>
<pre><code>descriptions = [line for line in lines if line.startswith('>')]
sequences = [line for line in lines if not line.startswith('>')]
result = dict(zip(sequences, descriptions))
</code></pre>
<p>但是,如果文件非常大,并且您不想将其整个长度读取四次,那么您只能通过存储描述并在序列出现时将其与序列匹配来处理一次。你知道吗</p>
<pre><code>result = {}
descriptions = []
with open('file_path', 'r') as f:
line = f.readline().strip()
while line.startswith('>'):
descriptions.append(line)
line = f.readline().strip()
result[line] = descriptions.pop(0)
for line in f:
result[line] = descriptions.pop(0)
</code></pre>
<p>当然,如果:</p>
<ul>
<li>序列的数目与描述的数目并不完全相同</li>
<li>序列与描述的顺序不同</li>
<li>序列和描述不是在整体块中。你知道吗</li>
</ul>