使它成为一个单行:`return sum [dict.get(char)for char in word]`

时间:2011-11-21 00:13:36

标签: python

显然,标题包含无法解释的代码。没有信息的

SyntaxError: invalid syntax
stderr的消息并没有告诉我什么,所以我把它一行一行地扔了,使用:

[dict.get(['val','val','foo'])]

并且后来发现dict.get()和iterables不能很好地结合在一起。

如果您还没有猜到,我正处于建设学习和娱乐玩具项目的激动人心的领域。这是我的代码:

def wordpoints(word):
    points = 0
    for char in word:
        points += dict.get(char)
    return points

这就是我想要的:

def wordpoints(word):
    return sum[dict.get(char) for char in word]

为了澄清,dict在我的代码中被命名为tile_p,代表平铺点。还有另一个def查找拼字游戏玩家的字典True|False会导致MySQL表格,如果cursor.fectchone()中包含某些内容,则将其传递给此函数。

1 个答案:

答案 0 :(得分:2)

使用括号而不是括号来调用函数:

def wordpoints(word):
    return sum(dict.get(char) for char in word)

解析器实际上告诉你的不仅仅是“语法无效”:

    return sum[dict.get(char) for char in word]
                                ^
SyntaxError: invalid syntax

看到小^?它指向导致解析失败的令牌。到目前为止,解析器的一切都很好:它看到一个名称(sum),后跟订阅运算符[]。在括号内,它需要一个任意表达式。最高dict.get(char),这是一个有效的表达式,但是以下标记for对解析器没有意义 - 因此此时出现语法错误。