За вашим кодом довольно сложно следовать однобуквенным именам переменных, поэтому я написал что-то новое, что, я думаю, делает то, что вы хотите:
def merge_dictionaries(list_of_dictionaries):
results_dict = dict()
for dictionary in list_of_dictionaries:
for key, value in dictionary.items():
results_dict[key] = results_dict.get(key, 0) + value
return {key: value for (key, value) in results_dict.iteritems() if value != 0}
print merge_dictionaries([{(1,3):2, (2,7):1} , {(1,3):6 , (9,9) : 0}])
>>> {(2, 7): 1, (1, 3): 8}
Он просматривает каждый словарь в вашем списке и добавляет значениедо суммы, а затем отфильтровывает ответы с суммой 0 в конце.