<p>您可以使用Counter和defaultdict的组合</p>
<pre><code>from collections import Counter, defaultdict
l = [['pm', 15], ['pm', 15], ['pm', 15], ['pm', 15], ['gvt', 1], ['tools', 2], ['drm', 14], ['vgem', 12], ['template', 2], ['gem', 101], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['kms', 7], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['meta', 8], ['drv', 24], ['gen3', 5], ['sw', 18], ['syncobj', 81], ['gen7', 1], ['testdisplay', 1], ['debugfs', 3], ['perf', 27], ['core', 17], ['prime', 134]]
# Get counts by converting lists to tuples
d = Counter((tuple(i) for i in l))
# Create an empty defaultdict with dict
final_d = defaultdict(dict)
# Fill the dict with values from tuples
for k, v in d.items():
final_d[k[0]][k[1]] = v
final_d.keys()
</code></pre>
<p>返回包含以下键的词典:</p>
<pre><code>dict_keys(['perf', 'pm', 'gen3', 'testdisplay', 'drv', 'syncobj', 'drm', 'gen7', 'gvt', 'template', 'gem', 'vgem', 'tools', 'kms', 'core', 'prime', 'sw', 'meta', 'debugfs'])
</code></pre>
<p>现在,您可以通过以下方式获取事件:</p>
<pre><code>final_d.get('pm')
final_d.get('kms')
</code></pre>
<p>退货:</p>
<pre><code>{15: 4} #pm
{7: 1, 150: 9} #kms
</code></pre>
<hr/>
<p><strong>更新</p>
<p>另一种解决方案是从一开始就使用嵌套的defaultdict:</p>
<pre><code>from collections import defaultdict
l = [['pm', 15], ['pm', 15], ['pm', 15], ['pm', 15], ['gvt', 1], ['tools', 2], ['drm', 14], ['vgem', 12], ['template', 2], ['gem', 101], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['gem', 150], ['kms', 7], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['kms', 150], ['meta', 8], ['drv', 24], ['gen3', 5], ['sw', 18], ['syncobj', 81], ['gen7', 1], ['testdisplay', 1], ['debugfs', 3], ['perf', 27], ['core', 17], ['prime', 134]]
# Create an empty defaultdict with dict
final_d = defaultdict(lambda: defaultdict(int))
# Fill the dict with values from tuples
for item in l:
final_d[item[0]][item[1]] += 1
</code></pre>