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