0

我有两个列表,一个是德文的,另一个是英文的。我想在英语列表中找到德语单词/短语的翻译位置。

例如

german = ['Der', 'Hund', 'ist', u'groß', 'und', 'freundlich']
english = ['The', 'dog' , 'is', 'big', 'and', 'friendly']

我想找到子字符串“ist Gross”,它被翻译为“大”,它的位置和它的翻译位置,并检查是否:

  1. 他们都在开始
  2. 他们俩都在最后
  3. 德语短语在开头,英语短语在结尾
  4. 德语短语在结尾,英语短语在开头

我尝试使用德语和英语中的第一个单词,并检查两者是否都在开头。我还检查了德语和英语的最后一个单词是否都在末尾。我被困在 3 和 4。有人知道吗?

4

1 回答 1

1

在这种特殊情况下,相应单词在它们各自列表中的位置是相同的。所以你可以zip()把它们放在一起;

In [1]: german = ['Der', 'Hund', 'ist', u'groß', 'und', 'freundlich']

In [2]: english = ['The', 'dog' , 'is', 'big', 'and', 'friendly']

In [3]: zip(german, english)
Out[3]: [('Der', 'The'), ('Hund', 'dog'), ('ist', 'is'), (u'gro\xdf', 'big'), ('und', 'and'), ('freundlich', 'friendly')]

您的问题 #1 的答案是:

In [4]: together = zip(german, english)

In [5]: together[0][0] == 'ist'
Out[5]: False

对于#2:

In [6]: together[-1][0] == u'groß'
Out[6]: False

问题#3和#4违反了建立列表的前提,因此不能直接根据列表来回答。

编辑: 要回答您最后的问题,您需要建立一本德英词典。Python 恰好有一个内置的字典类型。

In [3]: ge = {}

In [4]: for g, e in zip(german, english):
   ...:     ge[g] = e
   ...:     

In [5]: ge
Out[5]: {'Der': 'The', 'ist': 'is', 'und': 'and', u'gro\xdf': 'big', 'Hund': 'dog', 'freundlich': 'friendly'}

问题#3现在一般变成:

In [6]: german[0] == 'ist' and german[1] == u'groß' and english[-2] == ge['ist'] and english[-1] == ge[u'groß']
Out[6]: False

问题 #4:

In [16]: german[-2] == 'ist' and german[-1] == u'groß' and english[0] == ge['ist'] and english[1] == ge[u'groß']
Out[16]: False
于 2013-03-23T17:40:21.177 回答