>>> x = True
>>> a={ 1:198 if x else 2:198}
  File "<stdin>", line 1
    a={ 1:198 if x else 2:198}
                         ^
SyntaxError: invalid syntax

即使添加括号也无济于事。
>>> a={ (1:198) if x else (2:198) }
  File "<stdin>", line 1
    a={ (1:198) if x else (2:198) }
          ^
SyntaxError: invalid syntax

最佳答案

错误的根源在于,当Python解析输入时,它将像下面这样:

{
# dictionary or set
{ 1:
# dictionary where key is 1
{ 1: 198 if x else 2
# dictionary where key is 1 and the value is either 198 or 2, depending on x
{ 1: 198 if x else 2:
# wat?

这就是为什么尖号表示结肠的原因。它遇到一个冒号,它可能期望:
  • 定义值的表达式的延续;
  • 逗号,指示当前键值对的末尾和下一对的开始;或
  • 右花括号,指示字典文字的结尾。

  • 看来您只是想根据x更改键,所以需要将三元表达式放在键位置:
    {
    # dictionary or set
    { 1 if x else 2:
    # dictionary where key is either 1 or 2, depending on x
    { 1 if x else 2: 198
    # dictionary where key is either 1 or 2, depending on x, and the value is 198
    { 1 if x else 2: 198 }
    # OK!
    

    关于python - 此错误的起因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43615026/

    10-11 19:29