2015-10-15 77 views
-2

我使用下面的代碼,但顯示出一些錯誤 - 索引超出範圍如何翻譯英語瑞典使用的字典在python

english=["merry", "christmas", "and", "happy", "new", "year"] 
swedish=["god","jul","och","gott","nytt","år"] 
dict = {english[n]: swedish[n] for n in range(len(english))}#dictionary 
trans_list=[]#list to save translated words 

def trans(list): 
    n=0 
    for word1 in list:  
     for word2 in english: 
      if word1==word2:    
         trans_list[n]=dict[word2] 
         n=n+1 
         print trans_list     
list2=[] 
list =["merry", "christmas", "and", "happy", "new", "year"] 
trans(list) 

回答

0

trans_list被定義爲一個列表:

trans_list=[] 

然而它是一個空的列表。因此,有沒有索引可用,並且分配行失敗:

trans_list[n]=dict[word2] 

你可以做的是簡單地追加值列表:

trans_list.append(dict[word2]) 
1

這裏是另一種方法,您的問題:

english = ["merry", "christmas", "and", "happy", "new", "year"] 
swedish = ["god", "jul", "och", "gott", "nytt", "år"] 

eng_swe_dict = {english: swedish for english, swedish in zip(english, swedish)} 

def trans(word_list): 
    return [eng_swe_dict[word] for word in word_list] 

word_list = ["merry", "christmas", "and", "happy", "new", "year"] 
print trans(word_list) 

這將顯示如下內容:

['god', 'jul', 'och', 'gott', 'nytt', 'år'] 

首先,您應該避免使用變量名稱,例如dictlist,因爲它們都是在Python命令中構建的。 Python不會抱怨,但你會重新分配意思。

您的查找詞典可以使用zip命令構建。在這種情況下,需要從兩個列表中的每一個列表中提取一個條目,然後將其用於構建字典。

Python list comprehension可用於創建翻譯列表。對於每個單詞,它會翻譯並將其添加到新列表中。