擅长:python、mysql、java
<p>您可以使用<code>itertools.groupby()</code>来收集所有相似的键,然后构造一个新的字典来汇总所有组值,例如:</p>
<pre><code>>>> import itertools as it
>>> {gk: sum(item_dict[k] for k in g) for gk, g in it.groupby(item_dict, lambda k: k[:-3])}
{'item_A_v': 50, 'item_B_v': 75, 'item_C_v': 200}
</code></pre>
<p>@alecxe描述了几种获取所需密钥部分的方法,上面使用了<code>key[-3]</code>。你知道吗</p>
<p>有一个请求同时获取<code>count</code>和<code>sum</code>,您可以在一个简单的循环中实现并管理一个计数器,但有一种方法:</p>
<pre><code>>>> from collections import deque
>>> {key: deque(enumerate(it.accumulate(item_dict[k] for k in g), 1), maxlen=1).pop()
... for key, g in it.groupby(item_dict, lambda key: key[:-3])}
{'item_A_v': (1, 50), 'item_B_v': (1, 75), 'item_C_v': (2, 200)}
</code></pre>