【问题标题】:What does `{...}` mean in a python 2 dictionary value printed? [duplicate]`{...}` 在打印的 python 2 字典值中是什么意思? [复制]
【发布时间】:2020-03-18 11:07:57
【问题描述】:

在调试 python 程序时,我必须在日志文件上打印一个巨大字典的值。我复制粘贴了这个值,当我在 python 2 解释器中分配它时,我得到了SyntaxError: invalid syntax。什么?这怎么可能?仔细一看,我发现文件中的字典是这样的:

{'one': 1, 'two': 2, 'three': {...}}

three 的键值是 {...},这导致了无效的语法错误。

将此字典粘贴到 python 2 解释器会引发 Syntax Error 异常。将其粘贴到 python 3 解释器上,分配的值结果为{'one': 1, 'two': 2, 'three': {Ellipsis}}

那么,{...} 在 python 2 中的含义是什么?为什么即使在 python 2 脚本的日志文件中打印了该值,该语法在 python 2 中也是无效的?

【问题讨论】:

  • 也许记录器缩写了输出......!?然后它变成一个无效的文字。 Python 3 中的 ... 恰好是一个有效的文字,但显然可能不是原始值。
  • 看起来你把字典作为它自己的值之一放在里面。
  • 正如@deceze 指出的那样,这是让您知道字典可以嵌套的标准方式,例如与键关联的值可以是另一个字典等(符号 pbbly 来自无限系列,如 1+2+3 .....)
  • @khelwood 是的,d['three'] 给了d。字典引用了它自己。谢谢,cmets 指出了正确的方向。

标签: python dictionary printing ellipsis


【解决方案1】:

如果你这样写字典:

d = dict(one=1, two=2)
d['three'] = d
print(d)

你得到输出

{'one': 1, 'two': 2, 'three': {...}}

(尽管在旧版本的 Python 上顺序可能会有所不同)。

容器repr中的...用于表示容器包含自己,这样repr就不会无限递归。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-13
    • 2019-04-15
    • 2020-03-26
    • 2019-12-17
    • 2011-12-23
    • 2013-01-30
    • 1970-01-01
    • 2022-12-16
    相关资源
    最近更新 更多