Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以获得一个函数的输出,该函数将字符串转换为与输入相同的顺序?_Python_List_Dictionary - Fatal编程技术网

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是按顺序排序的