<p>首先,您需要使用一个<a href="https://docs.python.org/2/library/sets.html" rel="nofollow noreferrer">^{<cd1>}</a>,这将使这个<strong>快很多</strong>。在</p>
<p>也就是说,你要比较文件1的每一行和文件2的每一行。如果它们不匹配(常见情况下),则将它们添加到<code>untagged</code>列表中。在</p>
<p>需要注意的是,对于包含多行的任何文件,<strong>所有</strong>行都有不匹配的行,这会导致它们多次写入结果。在</p>
<p>设置操作包含在<code>set</code>中,您可以将它们用于您自己的目的,具体地说,区别如下:</p>
<blockquote>
<p>new set with elements in s but not in t</p>
</blockquote>
<p><a href="https://i.stack.imgur.com/NUXEK.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/NUXEK.png" alt="set operations table"/></a></p>
<p>以下是需要进行的更改:</p>
<p>使用<a href="https://docs.python.org/2/reference/expressions.html#grammar-token-generator_expression" rel="nofollow noreferrer">generator expressions</a>从<code>subset</code>和<code>master</code>中的所有关键元素创建一个集合:</p>
<pre><code>subsetSet = set(s[0] for s in subset)
masterSet = set(m[0] for m in master)
</code></pre>
<p>找出关键要素的区别:</p>
^{pr2}$
<p>现在,当您从主机读取时,请使用这些键,以便只读取未标记的行:</p>
<pre><code>with open('C:\Master.csv') as f:
master = csv.reader(f)
untagged = [m for m in master if m and m[0] in untagged_keys]
print untagged
</code></pre>