2010-10-09 3 views
2

J'ai un problème. Je veux faire un dictionnaire qui traduit les mots anglais en estonien. J'ai commencé, mais je ne sais pas comment continuer. S'il vous plaît, aidez. Le dictionnaire est un document texte dans lequel une tabulation sépare les mots anglais et estoniens.Dictionnaires en Python

file = open("dictionary.txt","r") 

eng = [] 

est = [] 

while True : 
    lines = file.readline() 

    if lines == "" : 
     break 

    pair = lines.split("\t") 
    eng.append(pair[0]) 
    est.append(pair[1]) 

    for i in range...... 

S'il vous plaît, aidez.

Répondre

3

Pour un dictionnaire, vous devez utiliser le type de dictionnaire qui mappe les clés aux valeurs et est beaucoup plus efficace pour les recherches. J'ai aussi fait quelques autres modifications apportées à votre code, les garder si vous le souhaitez:

engToEstDict = {} 

# The with statement automatically closes the file afterwards. Furthermore, one shouldn't 
# overwrite builtin names like "file", "dict" and so on (even though it's possible). 
with open("dictionary.txt", "r") as f: 
    for line in f: 
     if not line: 
      break 

     # Map the Estonian to the English word in the dictionary-typed variable 
     pair = lines.split("\t") 
     engToEstDict[pair[0]] = pair[1] 

# Then, lookup of Estonian words is simple 
print engToEstDict["hello"] # should probably print "tere", says Google Translator 

esprit que la recherche inversée (estonien vers l'anglais) n'est pas si facile. Si vous en avez également besoin, il vaudrait peut-être mieux créer une deuxième variable dictionnaire avec le mappage clé-valeur inversé (estToEngDict[pair[1]] = pair[0]) car la recherche sera beaucoup plus rapide que votre approche basée sur la liste.

+0

xreadlines est obsolète depuis longtemps. 'pour la ligne dans f: si la ligne: eng, est = line.split (" \ t ")' etc –

+0

@ THC4k: Droit, le fixe. – AndiDog

1

Il serait préférable d'utiliser les dict correctement nommés au lieu de deux listes:

d = {} 
# ... 
d[pair[0]] = pair[1] 

ensuite l'utiliser:

translated = d["hello"] 

Vous devez également noter que lorsque vous appelez readline() que la chaîne résultante inclut la nouvelle ligne de fin, donc vous devriez la supprimer avant de stocker la chaîne dans le dictionnaire.

Questions connexes