2015-10-15 70 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可用于创建翻译列表。对于每个单词,它会翻译并将其添加到新列表中。