为什么这个SyntaxError? (Python,字典理解与内联if)

时间:2016-08-14 12:06:41

标签: python

在字典中,我想确保特定密钥具有特定的编码。

test_dictionary = { k:v.encode('latin-1') if k=="test_key" else k:v for k,v in test_dictionary.items() }

我得到SyntaxError。我希望这是允许的。

1 个答案:

答案 0 :(得分:3)

请改为尝试:

test_dictionary = { k:v.encode('latin-1') if k=="test_key" else v for k,v in test_dictionary.items() }

第二个:已被删除,因此内联if要么对v进行编码,要么保留原样,具体取决于条件。

澄清我已在下面的表达式中添加了括号,以便更清楚地知道这是列表理解的“值”部分:

{ k: (v.encode('latin-1') if k=="test_key" else v) for k,v in test_dictionary.items() }
     ^___________________________________________^