如何在Python

时间:2017-04-16 23:55:12

标签: python string dictionary

我在Python中有以下字典:

myDict = {"how":"como", "you?":"tu?", "goodbye":"adios", "where":"donde"}

并使用类似:"How are you?"的字符串,与myDict相比,我希望得到以下结果:

"como are tu?"

你可以看到如果一个单词没有出现在myDict中,那么"是"结果显示为。

这是我的代码,直到现在:

myDict = {"how":"como", "you?":"tu?", "goodbye":"adios", "where":"donde"}

def translate(word):
    word = word.lower()
    word = word.split()

    for letter in word:
        if letter in myDict:
           return myDict[letter]

print(translate("How are you?"))

结果只得到第一个字母:como,那么我没有得到整个句子我做错了什么?

感谢您的高级帮助!

4 个答案:

答案 0 :(得分:0)

问题是你要返回字典中映射的第一个单词,所以你可以使用它(我已经改变了一些变量名,因为它有点令人困惑):

myDict = {"how":"como", "you?":"tu?", "goodbye":"adios", "where":"donde"}

def translate(string):
    string = string.lower()
    words = string.split()
    translation = ''

    for word in words:
        if word in myDict:
           translation += myDict[word]
        else:
           translation += word
        translation += ' ' # add a space between words

    return translation[:-1] #remove last space

print(translate("How are you?"))

<强>输出:

'como are tu?'

答案 1 :(得分:0)

该函数在第一次命中<div style="maring-top:0px !important;">语句时返回(退出)。在这种情况下,这将始终是第一个单词。

你应该做的是制作一个单词列表,当你看到当前的返回时,你应该添加到列表中。

添加完每个单词后,您可以在结尾处返回列表。

PS:你的术语令人困惑。你所拥有的是短语,每个短语都由单词构成。 &#34;这是一个短语&#34;是一个由4个单词组成的短语:&#34;这个&#34;,&#34;是&#34;,&#34; a&#34;,&#34;短语&#34;。一封信将是该单词的个别部分,例如&#34; T&#34;在&#34;这&#34;。

答案 2 :(得分:0)

当您调用return时,当前正在执行的方法将被终止,这就是您在找到一个单词后停止的原因。为了使您的方法正常工作,您必须附加到作为方法中的局部变量存储的String

这是一个使用列表理解来翻译String的函数,如果dictionary中存在def translate(myDict, string): return ' '.join([myDict[x.lower()] if x.lower() in myDict.keys() else x for x in string.split()])

myDict = {"how": "como", "you?": "tu?", "goodbye": "adios", "where": "donde"}

print(translate(myDict, 'How are you?'))

>> como are tu?

示例:

select * from employee WHERE fname like "%أسامة%" and mname="علي" and lname="الجاسم"

答案 3 :(得分:0)

myDict = {&#34;&#34;:&#34; como&#34;,&#34;你?&#34;:&#34; tu?&#34;,&#34;再见&#34;:&#34; adios&#34;,&#34;其中&#34;:&#34; donde&#34;}
s =&#34;你好吗?&#34;

newString =''

for word in s.lower().split():
  newWord = word
  if word in myDict:
    newWord = myDict[word]
  newString = newString+' '+newWord

print(newString)