[pyar] Seleccionar valores de un diccionario de tuplas

Daniel Moisset dmoisset en machinalis.com
Mie Sep 15 09:04:59 ART 2010


2010/9/15 Alejandro Alcalde <algui91 en gmail.com>:
> Hola, Tengo un problema en el que llevo pensando como resolver desde hace 2
> dias, y no le encuentro solucion, y me decidi a preguntarle a ustedes a ver
> si pueden ayudarme.
>
> Bueno, el caso es que tengo lo siguiente:
>
> niveles =
> ("1(A1)","2(A1)","3(A2)","4(A2)","5(B1)","6(B1)","1-1","1-2","2-1","2-2",">3")
>
>     temas = { niveles[0] : ("1","2","3","4","5","6","7"),
>               niveles[1] : ("8","9","10","11","12","13","14"),
>               niveles[2] : ("15","16","17","18","19","20","21"),
>               niveles[3] : ("22","23","24","25","26","27","28"),
>               niveles[4] : ("29","30","31","32","33","34","35"),
>               niveles[5] : ("36","37","38","39","40","41","42"),
>               niveles[6] : ("43","44","45","46"),
>               niveles[7] : ("47","48","49","50"),
>               niveles[8] : ("51","52","53","54"),
>               niveles[9] : ("55","56","57","58"),
>               niveles[10] :
> ("59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74",)}
>
> Bien, pues mi problemas es, que en otro lugar, tengo una variable que
> almacena un valor de temas, por ejemplo el 1, que esta e niveles[0].
> El caso es que nose de que manera puedo obtener, a partir de ese 1, el valor
> de niveles[0], niveles[1], o el que sea, dependiendo del numero.
> Para el caso del 1, deberia obtener 1(A1), es decir, el valor de niveles[0].

no hay una froma muy directa por como organizaste tus datos...
esencialmente tenes que iterar:

def obtener_nivel(tema):
    for n, ts in temas.iteritems():
        if tema in ts: return n

con eso, obtener_nivel(1) te va a dar "1(A1)". No se cuan seguido lo
haces y cuan grande es tu tabla real. Si esos son tus datos reales, y
la busqueda la haces 1 vez por segundo, o cada mas tiempo, seguramente
no calienta tener que iterar. Si estas haciendo esto en un lugar donde
la performance importa seguramente te conviene tener una estructura de
datos mas interesante que te permita agilizar la busqueda.

Saludos,
    D.



More information about the pyar mailing list