擅长:python、mysql、java
<p>以下是可能的替代方案:</p>
<ul>
<li><p>使用<a href="https://docs.python.org/2/library/itertools.html#itertools.groupby" rel="nofollow">itertools.groupby</a>对相关键进行分组:</p>
<pre><code>for itm_a, group in itertools.groupby(sorted(dict), lambda itm_a, itm_b: itm_a):
# now we can process everything that has the same first item
my_thing = sum([function_on(itm_a, itm_b) for _, itm_b in group], 0)
</code></pre></li>
<li><p>类似的方法,不使用<a href="https://docs.python.org/2/library/itertools.html#itertools.groupby" rel="nofollow">itertools.group_by</a>,是自己发现组</p>
<pre><code>groups = {}
for itm_a, itm_b in dict:
groups.setdefault(itm_a, []).append(itm_b)
# now we can process all of the related keys together
for itm_a, all_itm_b in groups.items():
# do something
my_thing = sum([function_on(itm_a, itm_b) for itm_b in all_itm_b], 0)
</code></pre></li>
</ul>