擅长:python、mysql、java
<p>你说得对,我喜欢<code>defaultdict</code>方法。如果将平均步骤与聚合步骤分离,您可能会发现该逻辑更易于管理。你知道吗</p>
<p>中间dict应该包含每个映射到服务级别列表的提供者名称键。循环dict中的每个人,并取他们服务的平均值来构建结果元组。所提供的服务的数量隐含着列表的长度。你知道吗</p>
<p>对元组的排序有很好的定义(默认情况下,它们将在第一个元素上排序),因此不需要指定<code>key</code>。你知道吗</p>
<pre><code>>>> from collections import defaultdict
>>> stats = defaultdict(list)
>>> for k, v in db1.items():
... stats[k[0]].append(v)
...
>>> sorted((k, len(v), sum(v) / len(v)) for k, v in stats.items())
[('Al', 2, 1.5), ('Bob', 2, 2.0), ('Carol', 3, 1.3333333333333333)]
</code></pre>