加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python函数返回空列表

发布时间:2020-12-20 12:10:48 所属栏目:Python 来源:网络整理
导读:我已经在这项任务上工作了一段时间,任务是编写一个将英文文本翻译成瑞典语的函数.我已经创建了一个带有密钥和密钥的dicitonary value,其中key是英文单词,value是瑞典单词. 我如何思考: 我在考虑应该有2个for循环.第一个应该通过字典中的键和值迭代,第二个应
我已经在这项任务上工作了一段时间,任务是编写一个将英文文本翻译成瑞典语的函数.我已经创建了一个带有密钥和密钥的dicitonary value,其中key是英文单词,value是瑞典单词.

我如何思考:
我在考虑应该有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: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"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读