Вы можете использовать itertools.groupby
:
import itertools
d = {('117', 14): 10, ('113', 11): 5, ('117', 16): 3, ('113', 5): 1}
new_d = [list(b) for _, b in itertools.groupby(sorted(d.items(), key=lambda x:x[0][0]), key=lambda x:x[0][0])]
final_result = dict(max(i, key=lambda x:x[-1]) for i in new_d)
Выход:
{('113', 11): 5, ('117', 14): 10}