擅长:python、mysql、java
<p>无需过度思考:只需使用<code>continue</code>遍历组合并跳过您不想处理的组合。你需要知道的另一件事是如何检查两个文件是否在同一个目录中换句话说,它们的目录名是否匹配?这就是<code>os.path.dirname</code>给我们的</p>
<pre><code>from itertools import combinations
from os.path import dirname
imageHashes = {}
imageHashes['/directorya/jim.txt'] = 7
imageHashes['/directorya/nigel.txt'] = 68
imageHashes['/directoryb/ralph.txt'] = 17
imageHashes['/directoryb/baba.txt'] = 43
for path_a, path_b in combinations(imageHashes, 2):
if dirname(path_a) == dirname(path_b):
continue
print("They're different!: {} vs. {}".format(path_a, path_b))
</code></pre>
<p>它给出:</p>
<pre class="lang-none prettyprint-override"><code>They're different!: /directoryb/baba.txt vs. /directorya/jim.txt
They're different!: /directoryb/baba.txt vs. /directorya/nigel.txt
They're different!: /directorya/jim.txt vs. /directoryb/ralph.txt
They're different!: /directorya/nigel.txt vs. /directoryb/ralph.txt
</code></pre>
<p>注意,不需要将<code>combinations</code>返回的迭代器转换为列表:这只是浪费时间</p>