d = {1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd', 5 : 'e' }
s = set([1, 4])
Поскольку вам не следует изменять словарь во время его перехода, у вас есть две возможности создать новый словарь.
Один - создать новый словарь из старого, отфильтровывая значения:
d2 = dict((k,v) for k,v in d.iteritems() if k in s)
Второй - извлечь ключи, пересечь их с набором s
и использовать их для создания нового словаря:
d2 = dict((k, d[k]) for k in set(d) & s)
Третий - удалить элементы непосредственно из d
:
for k in set(d) - s:
del d[k]