2013-07-05 24 views
2

我不知道爲什麼我得到一個語法錯誤,這個理解錯誤的語法時才使用,而使用詞典列表理解

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

錯誤是非常通用的「語法錯誤 - 無效語法」

一個更簡化的聲明似乎工作正常

[mydict[k] for mydict in dlist] 

有人可以告訴我是什麼原因造成的問題?

在此先感謝

+0

您是否嘗試刪除其他'NOT PRESENT'?我不認爲這是一個有效的語法。 – sashkello

+0

'k'在哪裏設置?在列表理解之外? – Marius

+3

你不能在列表理解中使用其他類似的東西 –

回答

6

的的if/else和對需要進行交換:

[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] 
1

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

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

這是否意味着我不能在列表解析中使用if-else作爲過濾器,但只有在? – BobLoblaw

+2

在列表理解的那一部分,是的。 –