回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有两个类似的列表:</p>
<pre><code>listt = [["a","abc","zzz","xxx","abc","abc"],["yyy","ggg","abc","cccc"]]
</code></pre>
<p>我还有一个类似这样的查询列表:</p>
<pre><code>queryList = ["abc","cccc","abc","yyy"]
</code></pre>
<p><code>queryList</code>&<code>listt[0]</code>包含2<code>"abc"</code>个公共项</p>
<p><code>queryList</code>&<code>listt[1]</code>包含1<code>"abc"</code>、1<code>"cccc"</code>&;1<code>"yyy"</code>共同点</p>
<p>所以我想要这样的输出:</p>
<pre><code>[2,3] #2 = Total common items between queryList & listt[0]
#3 = Total common items between queryList & listt[1]
</code></pre>
<p>我目前正在使用循环来实现这一点,但这似乎很慢。我将有数百万张清单,每个清单上有数千个项目</p>
<pre><code>listt = [["a","abc","zzz","xxx","abc","abc"],["yyy","ggg","abc","cccc"]]
queryList = ["abc","cccc","abc","yyy"]
totalMatch = []
for hashtree in listt:
matches = 0
tempQueryHash = queryList.copy()
for hash in hashtree:
for i in range(len(tempQueryHash)):
if tempQueryHash[i]==hash:
matches +=1
tempQueryHash[i] = "" #Don't Match the same block twice.
break
totalMatch.append(matches)
print(totalMatch)
</code></pre>