Based on Jon's answer , but using set intersection as suggested here :
In python 3:
old.update((k, new[k]) for k in old.keys() & new.keys())
In python 2.7:
old.update((k, new[k]) for k in old.viewkeys() & new.viewkeys())
python 2.7 3 future package:
from future.utils import viewkeys
old.update((k, new[k]) for k in viewkeys(old) & viewkeys(new))
python 2 3 future :
old.update((k, new[k]) for k in set(old.keys()) & set(new.keys()))