[Python-es] (sin asunto)

Arnau Sanchez pyarnau en gmail.com
Mie Jul 14 09:25:41 CEST 2010


On Tue, 13 Jul 2010 14:33:09 -0400 Juan Marcelo Leiva Sandoval wrote:

> def buscarIndice(nombre):
> 	indice = 0
> 	for buscar in listaCalles:
> 		if buscar.nombre == nombre:
> 			break
> 		else:
> 			indice = indice + 1
> 	return indice

El hilo ha crecido mucho y es difícil de seguir, pero no parece que
haya salido una solución con enumerate(), next() y generadores. En
fin, mi idea era ésta (generalizo el atributo):

def get_index(lst, attr, value):
    return next(idx for (idx, obj) in enumerate(lst) if getattr(obj, attr) == value)

que podría llamarse así:

index = get_index(lista_calles, "nombre", "nombre_de_una_calle")

Pero repito, si la búsqueda por nombre de calles es habitual, lo que
hay que hacer es usar diccionarios. 


Más información sobre la lista de distribución Python-es