2016-03-16 75 views
2

您好我想問下這是什麼,您看到下面是最快和最有效的方式來翻譯python中的單詞。我只需要從其他外語翻譯成英文。將字典分成每種語言的一本字典會更有效嗎?還是現在的方式是否好?如果代碼可以在python 2.7和3.x及更高版本中運行,那將會很好。在下面的代碼中,我必須將iteritems更改爲沒有什麼大不了的項目。最有效的方法來翻譯Python中的單詞

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

dct = {'apple': ['apfel', 'pomme', 'manzana', 'jabłko'], 
     'pineapple': ['ananas', 'ananas', 'piña', 'ananas']} 


def translate(q): 
    for eng_word, trans_list in dct.iteritems(): 
     for trans_word in trans_list: 
      if trans_word == q: 
       q = eng_word 
       print q 
       return q 

query = 'pomme' 

query = translate(query) 

query = 'ananas' 

query = translate(query) 

print query 
+4

如果你只需要翻譯成* *英語,你應該走另外一條路,所以你可以在固定時間內做到這一點(即,使用外來語的鍵在字典)。但是如果「相同」這個詞根據語言有兩個含義會發生什麼? – Casey

+0

它只是翻譯第一場比賽。它應該是最快的方式嗎?我很有信心,在我的程序中不會有相同的詞(它只會用於程序目的的詞彙量非常有限) – Gunnm

+1

好的。那麼,回答你的問題,不,這遠不是最有效的方式,因爲你可能每次都要掃描整個列表。 – Casey

回答

4

使用一個字典,其鍵是外來詞,其值是英語單詞。然後你可以用一行代碼翻譯O(1)的時間。

d = {'apfel': 'apple', 'jablko': 'apple', 'ananas': 'pineapple', 'manzana': 'apple', 'pomme': 'apple', 'pina': 'pineapple'} 
print d["pomme"] 
+0

當然,你必須考慮到我輸入一個你不知道的詞的情況。 – Casey

+0

好的,那麼你可以做'print d.get(「pomme」,「」)' – Kevin

+0

感謝您的快速回答 – Gunnm

相關問題