Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 奇怪的语法错误:定义返回语句后语法无效_Python_Return_Syntax Error - Fatal编程技术网

Python 奇怪的语法错误:定义返回语句后语法无效

Python 奇怪的语法错误:定义返回语句后语法无效,python,return,syntax-error,Python,Return,Syntax Error,我读过很多奇怪的语法错误问题,还没有在其中看到我的问题,我真的不知所措。我正在做一些作业,作业的截止日期越来越近,这个错误我无法摆脱: def create_voting_dict(): strlist = [voting_data[i].split() for i in range(len(voting_data))] return voting_dict = {strlist[h][0]:[int(strlist[h][g]) for g in range(3, len(st

我读过很多奇怪的语法错误问题,还没有在其中看到我的问题,我真的不知所措。我正在做一些作业,作业的截止日期越来越近,这个错误我无法摆脱:

def create_voting_dict():
    strlist = [voting_data[i].split() for i in range(len(voting_data))]
    return voting_dict = {strlist[h][0]:[int(strlist[h][g]) for g in range(3, len(strlist[h]))] for h in range(len(strlist))}
这让我知道了错误:

return voting_dict = {strlist[h][0]:[int(strlist[h][g]) for g in range(3, len(strlist[h]))] for h in range(len(strlist))}
                                                                                        ^         
SyntaxError: invalid syntax
当我在过程中定义投票表决时,这个错误没有发生,但是我需要全局定义它,所以我把它放在return之后,然后我得到了错误。我一直在数括号,但这似乎不是问题所在

我确信当我看到这个问题时,它是非常容易的,但我就是看不到它。谢谢你的帮助


*投票数据是一个包含字符串的列表,我执行了拆分字符串并创建字典的过程

您无法在
返回中定义。(因为赋值不返回值)只需执行即可

或者在一个新语句中定义一个
投票记录
,然后
返回投票记录

参见示例-

>>> def test():
        return num = 2
SyntaxError: invalid syntax
>>> def test():
        return 2

这是您的返回语句的问题,在该语句中您无法执行任务。只需在之前执行一步。

如果要创建/填充全局变量
投票
,请执行以下操作:

def create_voting_dict():
    strlist= [voting_data[i].split() for i in range(len(voting_data))]
    global voting_dict
    voting_dict= {strlist[h][0]:[int(strlist[h][g]) for g in range(3, len(strlist))}

create_voting_dict()

甚至

def create_voting_dict(vd):
    strlist= [vd[i].split() for i in range(len(vd))]
    return {strlist[h][0]:[int(strlist[h][g]) for g in range(3, len(strlist))}

voting_dict= create_voting_dict(voting_data)

后者的优点是更通用,因此可以在其他情况下使用。

我可以并且将在10分钟内完成:)后续过程使用此过程创建的投票记录,但是当我运行它们时,我得到的错误全局投票记录没有定义。知道这是怎么造成的吗?这就是我试图将定义放在return语句中的原因。如果您的
voting\u dict
是一个全局变量,您需要在函数中使用
global voting\u dict
语句。否则,您只需返回字典并使用callee函数访问它。@sukritkalla:+1获取第二个版本的注释。没有看到代码很难确定,但很可能
voting\u dict
根本不需要是全局变量,即使它是全局变量,也几乎可以肯定
create\u voting\u dict
不需要看到或修改它(因为它返回了值)。你是对的,这些函数在没有全局性的情况下工作,但是当给我的作业评分的脚本在上面运行时,我得到的错误是它不是全局的。这可能与我如何定义我的函数以及分级脚本如何调用它们有关。将其设置为全局可解决此问题。谢谢你们的时间,伙计们。为什么你们要使用所有这些
range(len(…)
调用来让事情变得过于复杂?为什么不干脆
{outer[0]:[int(inner)for inner in outer[3:]for outer in strlist]}
?另外,一般来说,如果您在121个字符的行中遇到语法错误,并且有大量的paren、方括号和大括号,那么调试的第一步应该是将其分成更小的部分,并找出哪一部分有错误。事实上,即使这里没有错误,您真的能理解这行代码的原样吗?(当然你不能在一个80列的窗口中,像一个SO问题或一个典型的终端……但即使忽略这一点,也很难理解。)我花了一些时间阅读,但实际上你第一次评论中的表述会让它变得不那么复杂。至于你的第二个评论,我会把它记在心上,为我的下一个错误:)谢谢。我的编程经验有限。
def create_voting_dict():
    strlist= [voting_data[i].split() for i in range(len(voting_data))]
    return {strlist[h][0]:[int(strlist[h][g]) for g in range(3, len(strlist))}

voting_dict= create_voting_dict()
def create_voting_dict(vd):
    strlist= [vd[i].split() for i in range(len(vd))]
    return {strlist[h][0]:[int(strlist[h][g]) for g in range(3, len(strlist))}

voting_dict= create_voting_dict(voting_data)