Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 将列表理解与词典一起使用时出现sytax错误_Python_Python 3.x - Fatal编程技术网

Python 将列表理解与词典一起使用时出现sytax错误

Python 将列表理解与词典一起使用时出现sytax错误,python,python-3.x,Python,Python 3.x,我不知道为什么我在理解时会出现语法错误 [mydict[k] for mydict in dlist if k in mydict else 'NOT PRESENT'] 该错误非常常见“语法错误-无效语法” 一个更简单的声明似乎很管用 [mydict[k] for mydict in dlist] 有人能告诉我是什么引起了这个问题吗 提前感谢需要交换的if/else和for: [mydict[k] if k in mydict else 'NOT PRESENT' for mydict i

我不知道为什么我在理解时会出现语法错误

[mydict[k] for mydict in dlist if k in mydict else 'NOT PRESENT']
该错误非常常见“语法错误-无效语法”

一个更简单的声明似乎很管用

[mydict[k] for mydict in dlist]
有人能告诉我是什么引起了这个问题吗


提前感谢

需要交换的if/else和for:

[mydict[k] if k in mydict else 'NOT PRESENT' for mydict in dlist]
您可以通过使用
get(k[,d])
来缩短此时间:


列表理解的
if
片段不是三元表达式的一部分

[mydict[k] if k in mydict else 'NOT PRESENT' for mydict in dlist]

您是否尝试删除其他“不存在”选项?我认为这不是一个有效的语法。
k
在哪里设置?在列表理解之外?你不能在列表中使用其他类似的东西comprehension@Marius是k和dlist设置得更早。对不起,我忘了提到这是三元运算符,不是列表。您可以将三元运算符放在列表理解的开头,请参见下面的答案:但它与列表理解本身无关(不超过
f(x)
是列表理解语法的一部分,因为您可以执行
[[f(x)for x in lst])
这是否意味着我不能在列表理解中使用if-else作为过滤器,而只能在列表理解的该部分使用if-else?是的。
[mydict[k] if k in mydict else 'NOT PRESENT' for mydict in dlist]