擅长:python、mysql、java
<p><strong>您当前的方法不能保证正常工作。</strong></p>
<p>首先,实际上不同的两行产生相同散列值的可能性很小。<code>hash(a) == hash(b)</code>并不总是意味着<code>a == b</code></p>
<p>第二,你的“reduce/lambda”戏谑让概率更高:</p>
<pre><code>>>> reduce(lambda x,y: x+y, ['foo', '1', '23'])
'foo123'
>>> reduce(lambda x,y: x+y, ['foo', '12', '3'])
'foo123'
>>>
</code></pre>
<p>顺便问一句,是不是“.join(['foo','1','23'])更清晰一些?</p>
<p>BTW2,为什么不使用<code>set</code>而不是<code>dict</code>来表示<code>htable</code>?</p>
<p><strong>这里有一个实用的解决方案:</strong>从<a href="http://gnuwin32.sourceforge.net/" rel="nofollow noreferrer">GnuWin32</a>站点获取“core utils”包并安装它。然后:</p>
<ol>
<li>写一份没有标题的文件副本到(比如)infile.csv</li>
<li><code>c:\gnuwin32\bin\sort --unique -ooutfile.csv infile.csv</code></li>
<li>读取outfile.csv并编写一份标题位于前面的副本</li>
</ol>
<p>对于步骤1&3中的每一步,都可以使用Python脚本或其他一些GnuWin32实用程序(head、tail、tee、cat…)。</p>