Python函数返回空列表
发布时间:2020-12-20 12:10:48 所属栏目:Python 来源:网络整理
导读:我已经在这项任务上工作了一段时间,任务是编写一个将英文文本翻译成瑞典语的函数.我已经创建了一个带有密钥和密钥的dicitonary value,其中key是英文单词,value是瑞典单词. 我如何思考: 我在考虑应该有2个for循环.第一个应该通过字典中的键和值迭代,第二个应
我已经在这项任务上工作了一段时间,任务是编写一个将英文文本翻译成瑞典语的函数.我已经创建了一个带有密钥和密钥的dicitonary value,其中key是英文单词,value是瑞典单词.
我如何思考: 问题: 这是我的代码: def translate(a): trs = {"merry":"god","christmas":"jul","and":"och","happy":"gott","new":"nytt","year":"?r"} translated = [] for k,v in trs.iteritems(): for i in a.split(" "): if trs[k] == i: translated.append(trs[v]) return translated print translate("merry christmas and happy new year") 解决方法
您的代码存在多个问题.
第一个是你迭代字典中的键值对,然后尝试在这里使用值作为键:if trs [k] == i:and here translated.append(trs [v])这些应该只是k和v而不是trs [k]和trs [v]. 第二个问题是一个更大的问题:修复前一个问题后,代码仍然给出了错误的答案.这些词是随机顺序的.这是因为您遍历外部循环中的字典项而不是单词本身.通过改变循环的顺序可以很容易地解决这个问题. 第三是我认为函数应该返回一个字符串.最后只返回“”.join(已翻译). 第四是你实际上不使用字典作为字典.您将它用作列表,但不是它们的使用方式. dicts是值的直接映射,您不需要一直迭代所有条目.使用in和[]运算符. 所以这是这个代码应该是这样的: def translate(a): trs = {"merry":"god","year":"ar"} translated = [] for i in a.split(" "): if i in trs: translated.append(trs[i]) return " ".join(translated) print translate("merry christmas and happy new year") # prints "god jul och gott nytt ar" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |