KeyError:'text / plain'是什么意思?

时间:2015-09-18 05:37:36

标签: python python-2.7 ipython spyder

在阅读Guido的博客“Tail Recursion Elimination”后,我在玩游戏时遇到了这个错误。

我很好奇是否对嵌套字典存在非递归限制,并且我确实收到了错误消息,但仅在非常特殊的情况下使用IPython控制台。

如果我降低xrange(100个工作),则没有错误。这里发生了什么?

thing = {}
thing2 = thing
for x in xrange(500):
    thing2[x] = {}
    thing2 = thing2[x]

thing

输出:

Traceback (most recent call last):

  File "<ipython-input-83-0b6d347b01d4>", line 1, in <module>
    thing

  File "C:\Python27\lib\site-packages\IPython\core\displayhook.py", line 255, in __call__
    self.log_output(format_dict)

  File "C:\Python27\lib\site-packages\IPython\core\displayhook.py", line 227, in log_output
    format_dict['text/plain']

KeyError: 'text/plain'


repr(thing)
Out[84]: '{0: {1: {2: {3: {4: ....{497: {498: {499: {}}}}}}}}'

1 个答案:

答案 0 :(得分:1)

这肯定是一个IPython问题。如果你试图显示&#34;事情&#34;,它就会失败(在Python3 / IPython 4中有另一个错误信息)。但是,它是完全有效的对象。

这个(500万级)没问题(虽然创建需要几秒钟):

thing = {}
thing2 = thing
for x in range(5000000):
    thing2[x] = {}
    thing2 = thing2[x]
thing;