Recuperando valores de diccionarios.
Víctor Peinado
vitojph en gmx.net
Mie Jun 30 16:42:52 CEST 2004
¡Hola a todos!
Llevo un par de horas parado dando vueltas a una cosa. Espero que se entienda,
voy pasito a paso:
Tengo definido un diccionario, por ejemplo:
>>> a = {1: "uno", 2: "dos", 3: "tres", 1234: "mucho"}
>>> a
{1: 'uno', 2: 'dos', 3: 'tres', 1234: 'mucho'}
Defino una determinada expresión regular para capturar dígitos tras cualquier
palabra a la que pongo como nombre "num".
>>> import re
>>> regex = re.compile(r"\w+ (?P<num>\d+) ")
Y compruebo que funciona con esta cadena, por ejemplo:
>>> m = regex.search("esta 1234 cadena tiene números")
>>> print m.group('num')
1234
Muy bien, pues me gustaría recuperar el valor asociado a m.group('num') en el
diccionario a, pero soy incapaz. Probamos:
>>> print a[m.group('num')]
Traceback (most recent call last):
File "<stdin>", line 1, in ?
KeyError: '1234'
Usando el método de diccionario get(), obtengo un resultado curiso:
>>> print a.get(m.group('num'))
None
Y estoy seguro de que el valor "capturado" en m.group('num') existe en mi
diccionario
>>> print a[1234]
mucho
>>> a.has_key(1234)
True
Peeero, si fuerzo que lo busque la clave como cadena (que es lo que parece que
hace en los ejemplos de arriba), no funciona.
>>> a.has_key('1234')
False
Así que empiezo a intuir un poco a qué se debe el error, aunque no estoy
seguro. Tendría que transformar las claves del diccionario a cadenas (aunque
son dígitos) o al revés, ¿no? Por ejemplo:
>>> print a.get(int(m.group('num')))
mucho
¿Se debe a esto el error o tiene una explicación más compleja? ¿Es ésta la
única forma de arreglar este problema?
Y una pregunta más: ¿cómo construyo diccionarios multidimensionales (un hash
de hashes)?
Gracias de antemano y saludos.
PD.: Perdonad por el rollo que os acabo de meter.
--
Res publica non dominetur.
Víctor Peinado || vitojph gmx net || http://vitojph.yoll.net
Fingerprint: C0D5 22EA 607C 47F9 28D7 3FFB 1CE0 342F 1285 66CA
JID: vitojph jabber dk || <vitojph />
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es