您的代码存在多个问题.
第一个是你迭代字典中的键值对,然后尝试在这里使用值作为键: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", "christmas":"jul", "and":"och", "happy":"gott", "new":"nytt", "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"