[Python-es] Diccionarios
Daπid
davidmenhur en gmail.com
Sab Oct 13 13:19:32 CEST 2012
2012/10/13 kausdiv <kausdiv en gmail.com>:
> 1º:
> El diccionario tiene una clave y un valor (Clave "Cat" valor "Gato") por
> tanto va muy bien si siempre quier saber la traducción en un sentido: "Cat"
> -> "Gato".
> ¿ Pero como puedo hacer al revés ?
Puedes construirte el diccionario inverso. No sé si existe una forma
mejor, pero con algo de fuerza bruta puede salir en milisegundos.
Necesitas los métodos .keys() y .values()
> 2º:
> Si yo quiero hacer un función para que me pregunte palabras aleatorias. Creo
> que no valdría hacer algo así: dic[2]
Puedes hacer dic[random.choice(dic.keys())].
> Viendo estas dificultades y el poco tiempo que llevo en python, me pregunto
> si no es mejor hacerlo con listas:
> lista=["Cat;Gato","Son;Hijo"]
> y obtener clave y valor con split(";") de forma que podría buscar tanto en
> ingles como en españo.
Mucho más sencillo hacer una lista de listas.
lista=[['cat', 'gato'],['son','hijo']]
o de tuplas, si no las vas a modificar:
lista_tupla=[('cat', 'gato'),('son','hijo')]
Pero quizá sea más fácil hacer dos listas paralelas:
esp=['gato', 'hijo']
eng=['cat', 'son']
Y llamarlas por el mismo número. Ambas son equivalentes, ya que:
lista_tupla==zip(eng,esp)
eng==[x[0] for x in lista_tupla]
esp==[x[1] for x in lista_tupla]
Más información sobre la lista de distribución Python-es