擅长:python、mysql、java
<p>将概念列表更改为集合,这样搜索将是O(1)。然后可以使用交集来计算每个集合中的匹配数。你知道吗</p>
<pre><code>import set
mylist = [
[5274919, {"report", "porcelain", "firing", "technic"}],
[5274920, {"implantology", "dentistry"}],
[52749, {"method", "recognition", "long", "standing", "root", "perforation", "molar"}],
[5274923, {"exogenic", "endogenic", "cause", "tooth", "jaw", "anomaly", "method", "method", "standing"}]
]
myconcepts = {"method", "standing"}
mycounting = 0
for item in mylist:
mycounting += len(set.intersection(myconcepts, item[1]))
print(mycounting)
</code></pre>
<p>如果要分别获取每个概念的计数,则需要在<code>myconcept</code>上循环,然后使用<code>in</code>运算符。你可以把结果放进字典里。你知道吗</p>
<pre><code>mycounting = {concept: sum(1 for l in mylist if concept in l[1]) for concept in myconcepts}
print(mycounting) // {'standing': 2, 'method': 2}
</code></pre>
<p>这仍然比使用列表更有效,因为<code>concept in l[1]</code>是O(1)。你知道吗</p>