为啥 for 循环中的这种无效语法? [复制]

Posted

技术标签:

【中文标题】为啥 for 循环中的这种无效语法? [复制]【英文标题】:Why is this invalid syntax within for loop? [duplicate]为什么 for 循环中的这种无效语法? [复制] 【发布时间】:2018-10-30 04:00:24 【问题描述】:

我正在尝试使用以下代码并收到错误:

def preprocess(s):
    return (word: True for word in s.lower().split())
s1 = 'This is a book'
text = preprocess(s1)

然后出现的错误是

return (word: True for word in s.lower().split()) 

是无效的语法。我找不到错误的来源。

我想把序列放到这个列表模型中:

["This": True, "is" : True, "a" :True, "book": True]

【问题讨论】:

这不是一个列表。你想要一本字典 另外,如果你确实想要一个列表,你会使用[],而不是(),否则你只会返回一个生成器表达式。 【参考方案1】:

您想构建字典而不是列表。请改用花括号 语法:

def preprocess(s):
    return word: True for word in s.lower().split()
s1 = 'This is a book'
text = preprocess(s1)

【讨论】:

【参考方案2】:

您要做的是将序列放入字典而不是列表中。 字典的格式是:

dictionaryName=
    key:value,
    key1:value1,

所以你的代码可以这样工作:

def preprocess(s):
    return word:True for word in s.lower().split()
s1 = 'This is a book'
text = preprocess(s1)

【讨论】:

以上是关于为啥 for 循环中的这种无效语法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 .forEach() 有效但 for 循环无效? [复制]

为啥这种语法专门用于初始化字符串文字而不能用于字符数组? [复制]

shell中的for循环出现语法错误(syntax error: bad for loop variable)

在 kivy 样式文件中使用尖括号时,为啥我不断收到“无效语法”错误?

java中的增强for循环,是啥?语法结构和使用得条件?详细解答就加高分。

Java学习基础的第四天 for循环,Java语法中的方法,方法的重载,可变参数,递归,数组