Boa, eu só trocaria o uso direto da chave por um s.get('pesquisar')
,que evita a quebra do código caso não exista a chave, por padrão o valor de retorno é None se não existir.
O mesmo para as chaves dentro do loop:
for site_id, site_info in enumerate(filter(lambda s: s.get('pesquisar'), sites)):
print(f"id: {site_id} - Abrindo site: {site_info.get('nome']}")
# etc...