<p>可以将<code>defaultdict</code>与<code>Counter</code>一起使用,如下所示:</p>
<pre><code>from collections import defaultdict, Counter
count = defaultdict(Counter)
for m, t in zip(Mobile, Test):
count[m].update({t: 1})
count
# defaultdict(collections.Counter,
# {'M1': Counter({'call': 4, 'mms': 1, 'sms': 2}),
# 'M2': Counter({'mms': 2, 'sms': 2, 'voltecall': 3})})
</code></pre>
<hr/>
<p>如果您想要一个元组列表,可以通过列表理解轻松地从上面的字典<code>count</code>中提取元组:</p>
<pre><code>[(k, a, c) for k, v in count.items() for a, c in v.items()]
# [('M1', 'mms', 1),
# ('M1', 'sms', 2),
# ('M1', 'call', 4),
# ('M2', 'mms', 2),
# ('M2', 'sms', 2),
# ('M2', 'voltecall', 3)]
</code></pre>
<hr/>
<p>更新:</p>
<p>如果有三个列表,则可以创建嵌套的<em>defaultdict</em>:</p>
<pre><code>Mobile= ('M1','M1','M1','M1','M1','M1','M1','M2','M2','M2','M2','M2','M2','M2')
Test=('call','call','sms','sms','mms','call','call','mms','mms','sms','sms','voltecall','voltecall','voltecall')
Response = ('error', 'success', 'skip', 'error', 'success', 'skip', 'error', 'success', 'skip', 'error', 'success', 'skip', 'error', 'success')
from collections import defaultdict, Counter
count = defaultdict(lambda : defaultdict(Counter))
for m, t, r in zip(Mobile, Test, Response):
count[m][t].update({r: 1})
</code></pre>
<p><em>注意</em>:如果您还有更多,我建议您查看<code>pandas</code>库,它使这种类型的分组操作更直接。你知道吗</p>