diccionarios

Chema Cortés py en ch3m4.org
Jue Sep 25 01:15:46 CEST 2003


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

El Sábado, 20 de Septiembre de 2003 22:28, ammgroup escribió:

> Por lo poco que se, como la utilidad del diccionario es poder acceder a
> su información, el orden poco importa. Supongo que por eso no mantiene
> el orden, cosa absurda por otro lado, que costaba mantener el orden.

Aunque no lo creas, sí que cuesta mantener el orden. La técnica utilizada del 
tipo "hash" consiste en saber si una clave existe o no en el diccionario. 
Para mantener el orden haría falta, además de saber que si existe o no esa 
clave, saber entre qué dos claves se posiciona. Además tenemos el problema 
añadido de que como índices no sólo están las cadenas de texto, sino que 
podría ser cualquier objeto "invariante" (números, cadenas, tuplas, objetos).

Para crear diccionarios ordenados yo utilizaría los btree del módulo 'bsddb'. 
Puede parecer que es "matar moscas a cañonazos", pero no me extrañaría que se 
implementen así los diccionarios en el futuro:

>>> import bsddb, random
>>> l=range(10)
>>> random.shuffle(l)
>>> l
[4, 3, 5, 2, 7, 8, 9, 1, 0, 6]
>>> d=bsddb.btopen(None)
>>> for i in l:
...   d['%d'%i]='%d'%i**2
...
>>> d.keys()
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> for k in d.keys():
...   print "%s --> %s"%(k,d[k])
...
0 --> 0
1 --> 1
2 --> 4
3 --> 9
4 --> 16
5 --> 25
6 --> 36
7 --> 49
8 --> 64
9 --> 81




- -- 
Chema Cortes (py en ch3m4.org)
  http://py.ch3m4.org
    PGPKEY: mailto:pgpkey en ch3m4.org?subject=__PGPKEY__

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux)

iD8DBQE/ciWjHLTQrABk8H0RAkf6AJ9cr/7qZXdAfgN7va7xh/HLUXLg1ACgs16P
/ByMd61sfgtQaP/baHX9ts0=
=byfr
-----END PGP SIGNATURE-----




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