Oi Fábio,
Você pode iterar só sobre a sua lista ao invés de todos os nós do seu
dict. Isso vai te poupar vários "i in lista", que pode ser uma operação
cara dependendo do tamanho do seu grafo.
def retorna_indice_menor_valor_do_dicionario_se_indice_pertencer_a_lista(qnt_vertices,lista, dicionario):
menor = 99999999
# -1 se nao achou menor valor
indice= -1
for i in lista:
if dicionario[i] < menor:
menor = dicionario[i]
indice = i
return indice
Depois, se ainda for
preciso otimizar, você pode passar o controle do loop pro nível do C, ao
invés do Python, mais ou menos como o Christian sugeriu, assim:
def get_second_element_of_tuple(the_tuple):
return the_tuple[1]
min_key, value = min( ((i, dicionario[i]) for i in lista), key=get_second_element_of_tuple )
Mas
aí já estamos no mundo da micro-otimização, tenho certeza que tem algo
melhor que isso a ser feito, olhando para o programa todo, como o Rafael sugere.
--
Best regards,
Leandro Lameiro
Blog:
http://lameiro.wordpress.comTwitter:
http://twitter.com/lameiro