【问题标题】:Most efficient way to translate words in Python在 Python 中翻译单词的最有效方法
【发布时间】: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


【解决方案1】:

使用键是外来词,值是英文单词的字典。然后你可以用一行代码在 O(1) 时间内翻译。

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

【讨论】:

  • 当然,您必须考虑我输入一个您不知道的单词的情况。
  • 好的,那你就可以print d.get("pomme", "<No translation available>")
  • 感谢您的快速回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 2011-12-22
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多