Python 有没有一种方法可以获得一个函数的输出,该函数将字符串转换为与输入相同的顺序?
抱歉,如果标题混淆了。我正在做的练习是编写一个包含两个参数的函数:一个将瑞典语单词映射到英语的词典,以及一个对应于瑞典语句子的字符串。函数应该返回句子的英语翻译 我的函数在翻译方面工作得很好,但它产生的输出顺序错误 例如,以下参数,由一本词典和一个瑞典语字符串组成(英语:“一只好猴子”) 应该回来Python 有没有一种方法可以获得一个函数的输出,该函数将字符串转换为与输入相同的顺序?,python,list,dictionary,Python,List,Dictionary,抱歉,如果标题混淆了。我正在做的练习是编写一个包含两个参数的函数:一个将瑞典语单词映射到英语的词典,以及一个对应于瑞典语句子的字符串。函数应该返回句子的英语翻译 我的函数在翻译方面工作得很好,但它产生的输出顺序错误 例如,以下参数,由一本词典和一个瑞典语字符串组成(英语:“一只好猴子”) 应该回来 'a fine monkey' 但它却回来了 'a monkey fine' 以下是函数的脚本: def翻译句子(d,句子): 结果=[] 分隔符=“” s=句子。拆分() 对于d中的单词: 如
'a fine monkey'
但它却回来了
'a monkey fine'
以下是函数的脚本:
def翻译句子(d,句子):
结果=[]
分隔符=“”
s=句子。拆分()
对于d中的单词:
如果句子中的单词和d中的单词:
d_单词=(d[单词])
结果.追加(d_单词)
对于s中的单词:
如果单词在s中,而单词不在d中:
单词
结果。追加(s_单词)
返回分隔符。联接(结果)
正如我之前所说的,问题是函数返回的翻译字符串中的单词顺序错误。我知道python字典是不按顺序排列的,有没有办法使输出与句子的顺序相同?这一行代码似乎很好用。查找字典中的每个单词,并按照与输入句子相同的顺序连接
def translate_sentence(d, sentence):
return ' '.join(d.get(word, word) for word in sentence.split())
例如:
>>> translate_sentence({'en': 'a', 'fin': 'fine', 'apa': 'monkey'}, 'en fin apa')
'a fine monkey'
>>>
这一行似乎很好用。查找字典中的每个单词,并按照与输入句子相同的顺序连接
def translate_sentence(d, sentence):
return ' '.join(d.get(word, word) for word in sentence.split())
例如:
>>> translate_sentence({'en': 'a', 'fin': 'fine', 'apa': 'monkey'}, 'en fin apa')
'a fine monkey'
>>>
我们检查每个键的值,其中键是字符串中的一个单词,如果找不到它,则使用原始单词
def translate_sent(d, s):
return ' '.join(d[word] if word in d else word for word in s.split())
>>> translate_sent({'en': 'a', 'fin': 'fine', 'apa': 'monkey'}, 'en fin apa')
'a fine monkey'
>>> translate_sent({'en': 'a', 'fin': 'fine'}, 'en fin apa')
‘a fine apa’
我们检查每个键的值,其中键是字符串中的一个单词,如果找不到它,则使用原始单词
def translate_sent(d, s):
return ' '.join(d[word] if word in d else word for word in s.split())
>>> translate_sent({'en': 'a', 'fin': 'fine', 'apa': 'monkey'}, 'en fin apa')
'a fine monkey'
>>> translate_sent({'en': 'a', 'fin': 'fine'}, 'en fin apa')
‘a fine apa’
我在答复中处理了那件事。请检查它是否有效sense@DeveshKumarSingh酷。我也用我的方式处理了它——用一种更简洁的方式:)非常简洁,希望我的想法也能得到+1:)我在回答中处理了这个问题。请检查它是否有效sense@DeveshKumarSingh酷。我也用我的方式处理了它——用一种稍微简洁的方式:)非常好,简洁性好+1,希望我的想法也能得到+1:)作为旁注,Python 3.6+中的dict是按旁注排序的,Python 3.6+中的dict是按顺序排序的