我希望创建一个finalDic,其中包含共同的键和它们值的总和。
然后按它们的值进行求和并排序。
我尝试过这个方法,但与我想要的还相距甚远。
myDic = [{2:1, 3:1, 5:2}, {3:4, 6:4, 2:3}, {2:5, 3:6}, ...]
首先找到共同的键
commonkey = [{2:1, 3:1}, {2:3, 3:4}, {2:5, 3:6}]
然后按它们的值进行求和并排序。
finalDic= {3:11, 2,9}
我尝试过这个方法,但与我想要的还相距甚远。
import collections
myDic = [{2:1, 3:1, 5:2}, {3:4, 6:4, 2:3}, {2:5, 3:6}]
def commonKey(x):
i=0
allKeys = []
while i<len(x):
for key in x[0].keys():
allKeys.append(key)
i=i+1
commonKeys = collections.Counter(allKeys)
commonKeys = [i for i in commonKeys if commonKeys[i]>len(x)-1]
return commonKeys
print commonKey(myDic)
谢谢
summed_dict = {k:sum(d[k] for d in new_dicts) for k in common_keys}
而不是使用defaultdict
方法。 - inspectorG4dgetreduce
的情况下使用set.intersection
函数:set.intersection(*map(set, my_dict))
,这样速度更快。 - jamylakcollections
中的这个辅助类:http://docs.python.org/2/library/collections.html#collections.OrderedDict - Blender