【问题标题】:Python : SyntaxError: keyword can't be an expression [duplicate]Python:SyntaxError:关键字不能是表达式[重复]
【发布时间】:2017-05-16 09:14:45
【问题描述】:

不确定问题出在哪里,我尝试对这个字典使用多个变量名称,但错误相同:

>>> hostname=dict('172.16.1.75'='N-Switch', '172.16.1.76' = 'W-Switch', '172.16.1.77' = 'E-Switch')
SyntaxError: keyword can't be an expression

我正在尝试为脚本创建一个字典,以通过调用其 IP 地址作为键来更改资产上的主机名。知道问题出在哪里吗?

【问题讨论】:

  • 要使用dict函数,键必须像函数参数一样传递,这意味着它们必须是有效的标识符
  • 您只能使用有效的 Python 标识符作为关键字参数(包括 dict() 可调用的)。改用{...} dict 显示。
  • 如果我想用dict 实现这一点,有人可以提供一个例子吗?

标签: python ios dictionary


【解决方案1】:

初始化dict的常用格式是这样的

hostname=dict([('172.16.1.75','N-Switch'), ('172.16.1.76','W-Switch'), ('172.16.1.77', 'E-Switch')])

或者更简单地说,正如 Carles Mitjans 在他的回答中给出的那样(这似乎已被删除,因此为了

 hostname={'172.16.1.75':'N-Switch', '172.16.1.76' : 'W-Switch', '172.16.1.77' : 'E-Switch'}

这实际上是在 python 中使用字典的更常用的方式。内置的dict 仅在您使用动态列表时使用。

字典理解也是可能的。

【讨论】:

  • 我认为您缺少元组的父容器
  • 是的,感谢您的指出。
【解决方案2】:

我不确定您使用的语法是否有效,请尝试:

hostname={'172.16.1.75':'N-Switch', '172.16.1.76' : 'W-Switch', '172.16.1.77' : 'E-Switch'}

【讨论】:

    【解决方案3】:

    正如错误所说,参数不能是字符串。解决方案是使用{} 构造函数创建字典:

    hostname={'172.16.1.75':'N-Switch', '172.16.1.76' : 'W-Switch', '172.16.1.77' : 'E-Switch'}
    

    如果您希望使用dict 构造函数,您需要提供有效参数作为键(而不是字符串)。

    【讨论】:

      猜你喜欢
      • 2013-06-04
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 2016-09-26
      • 2012-05-19
      • 2012-07-22
      相关资源
      最近更新 更多