Estructura para una tabla?
Hernan Martinez Foffani
hernan en orgmf.com.ar
Mar Mayo 28 13:50:56 CEST 2002
> Tengo que guardar una tabla en memoria (pongamos unos 15 registros con 4
> campos) y después ordenarla según el valor de los campos o hacer
> búsquedas
> de ciertos valores. Que estructura me recomendais de forma que las
> consultas y ordenaciones sean bastante eficientes? Y si la tabla
> fuera mayor?
Algo sencillo es usar una lista de tuplas, usando una tupla por registro.
>>> l = [('a',3), ('b',1)]
>>> l
[('a', 3), ('b', 1)]
>>>
para ordenar por las diferentes columnas, usas el metodo sort de las
listas pasandole como parametro una funcion de comparacion especifica.
>>> def c1(x, y):
''' ordena por la columna 2 de las tuplas'''
if x[1] < y[1]:
return -1
elif x[1] == y[1]:
return 0
else:
return 1
>>>
>>> l.sort(c1)
>>> l
[('b', 1), ('a', 3)]
>>>
tendrías que hacer una funcion de comparacion para cada columna o
mejor aun, una funcion que "cree" las otras que necesites.
con python 2.2 en adelante también podrías derivar el tipo list
en uno propio, para que te quede algo así:
>>> l.sortbyfield(1)
>>> l
[('b', 1), ('a', 3)]
>>>
con una estructura de datos así, las busquedas de valores son
lineales. tienes que recorrer toda la lista.
-Hernan
Más información sobre la lista de distribución Python-es