不,那里没有。dict理解会为每次迭代生成一个 新 项目,并且您的代码需要生成 更少的 项目(合并值)。
没有不使用(难看的,非pythonic的)副作用技巧,就无法访??问早期迭代中生成的密钥。dict
理解所要产生的对象尚不存在,因此也无法产生自引用。
只需坚持自己的for
循环,它就会更具可读性。
另一种选择是使用排序和分组,O(NlogN)算法与直接循环的简单O(N):
from itertools import groupby
from operator import itemgetter
res = {key: sum(t[1] for t in group)
for key, group in groupby(sorted(data, key=itemgetter(0)), key=itemgetter(0))}