gpt4 book ai didi

Python 函数返回空列表

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:43 25 4
gpt4 key购买 nike

我从事这项任务已经有一段时间了,任务是编写一个将英语文本翻译成瑞典语的函数。我用键和值创建了一个字典,其中键是英文单词,值是瑞典语单词。

我的想法:我在想应该有2个for循环。第一个应该遍历字典中的键和值,第二个应该遍历字符串,之后应该有一个条件来检查字典中的键是否等于字符串中的单词。如果是,则将键的值附加到列表中。

问题:该函数返回一个空列表。

这是我的代码:

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: 和此处 translated.append(trs[v]) 这些应该只是 kv 而不是 trs[k]trs[v].

第二个问题比较大:修正前一个问题后,代码仍然给出错误答案。单词的顺序是随机的。这是因为您在外循环中迭代字典项而不是单词本身。这可以通过更改循环的顺序轻松解决。

第三个是我认为函数应该返回一个字符串。只需在最后返回 "".join(translated)

第四个是你实际上并没有把字典当作字典来使用。您将它用作列表,但这不是它们的用途。 dict 是值的直接映射,您不需要一直遍历所有条目。使用 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"

关于Python 函数返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37632730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com