<p>您没有指定源数据的格式,因此假设它是一个列表列表:</p>
<pre><code>>>> data = [["cody melton", "apple", 3], ["cody melton", "banana", 5],
["cody melton", "banana", 7], ["larisa harris", "apple", 8],
["larisa harris", "apple", 5]]
</code></pre>
<p>当您在“香草”python中寻找性能时,请查看标准库—在本例中是<a href="https://docs.python.org/3/library/collections.html#collections.Counter" rel="nofollow noreferrer">^{<cd1>}</a>;我们将用它来计算所有独特的水果组合:</p>
<pre><code>>>> pairs = Counter(((x[0], x[1]) for x in data))
>>> pairs
Counter({('cody melton', 'banana'): 2, ('larisa harris', 'apple'): 2, ('cody melton', 'apple'): 1})
</code></pre>
<p>参数是一个迭代器,它从源数据中创建一个元组<code>(name, fruit)</code>,并且<code>Counter</code>对它们的出现进行计数</p>
<hr/>
<p><strong>编辑:</strong>如果您只想计算水果在特定集合中的那些:</p>
<pre><code>fruits = set(['apple', 'banana', 'coconut'])
</code></pre>
<p>,然后在理解中加上这个条件:</p>
<pre><code>>>> pairs = Counter(((x[0], x[1]) for x in data if x[1] in fruits))
</code></pre>
<hr/>
<p>我们就快到了-剩下的就是计算每个名字的出现次数:</p>
<pre><code>>>> names = Counter((pair[0] for pair in pairs))
>>> names
Counter({'cody melton': 2, 'larisa harris': 1})
>>> dict(names) # this is how to cast it to a regular dict
{'larisa harris': 1, 'cody melton': 2}
</code></pre>
<p>我看到您的输出中有一个出现次数为0的“harry barry”——它们显然没有出现在源代码<code>data</code>中,所以只需将它们添加到dict中,值为0</p>