[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