Python удаляет ключи словаря, которые не встречаются в отдельном словаре

У меня есть два словаря, мне нужно удалить ключи из словаря 1, которые не встречаются в словаре 2. Это моя попытка:

d1 = {'id1':1, 'id2':1, 'id3':1, 'id4':1} d2 = {'id1':0, 'id2':0, 'id3':0, 'idnew':0} for k in (d1.keys()-d2.keys()): del d1[k] print (d1) 

печатает:

 {'id1': 1, 'id2': 1, 'id3': 1} 

Мой вопрос: Является ли это самым быстрым / наиболее эффективным для памяти способом? или он создает множества, которые занимают больше памяти, чем требуется, чтобы сделать что-то вроде этого

Моя вторая попытка:

 d1 = {k:v for k,v in d1.items() if k in d2} 

фильтр и понимание dict могут быть хорошим способом пойти на такую ​​задачу, хотя эту проблему легко решить без этого.

  filtered_d = {k:d1[k] for k in filter(lambda k: k in d2, d1)}