【发布时间】:2016-03-16 17:58:02
【问题描述】:
您好,我想问一下您在下面看到的是否是在 python 中翻译单词的最快和最有效的方法。我只需要从其他外语翻译成英语。将字典划分为每种语言的一本字典会更有效,还是像现在这样好?如果代码可以在 python 2.7 和 3.x 及更高版本中工作,那就太好了。在下面的代码中,我必须将 iteritems 更改为没什么大不了的项目。
#!/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
【问题讨论】:
-
如果你只需要翻译成英文你应该走另一条路,这样你就可以在恒定时间内完成(即使用外来词作为字典中的键)。但是,如果“相同”的词根据语言有两种含义,会发生什么?
-
它只是翻译第一个匹配。这应该是最快的方法吧?我很有信心在我的程序中不会有相同的单词(仅出于程序目的,它的词汇量非常有限)
-
好的。好吧,要回答您的问题,不,这远不是最有效的方法,因为您可能每次都必须扫描整个列表。
-
感谢您的回答。我是编程新手,所以我可能错了,但它不会在第一次“返回”匹配后停止扫描槽列表吗?
-
是的。但最坏情况下的性能是线性的,因为如果您想要的单词是最后一个数组的最后一个元素,您需要扫描所有内容。另一方面,如果您通过翻译来键入字典,那么无论您想要哪个单词,最坏情况下的性能都是不变的。
标签: python dictionary internationalization