2

我不确定为什么我会因为这种理解而出现语法错误

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

该错误非常通用“语法错误 - 无效语法”

一个更简化的语句似乎工作正常

[mydict[k] for mydict in dlist]

有人可以告诉我是什么导致了问题吗?

提前致谢

4

2 回答 2

6

if/else 和 for 需要交换:

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

您可以使用以下方法缩短此时间get(k[,d])

[mydict.get(k, 'NOT PRESENT') for mydict in dlist]
于 2013-07-05T00:18:37.340 回答
1

列表推导的if片段不是三元表达式的一部分。

[mydict[k] if k in mydict else 'NOT PRESENT' for mydict in dlist]
于 2013-07-05T00:18:56.800 回答