【问题标题】:google colab, can't pickle my defaultdict - recursionerrorgoogle colab,无法腌制我的默认字典 - 递归错误
【发布时间】:2020-03-03 11:32:09
【问题描述】:

我正在使用谷歌 colab。我已经做了很多次我想做的事情,所以我不知道为什么它现在不起作用。

我所做的只是制作一个包含大约 1000 个键的字典,每个值都是 4 个字符串的列表。 我已经确认这本词典正是我想的那样。

我正在使用作业库。我也试过了,pickle.dump。

dump(mydict,'/content/gdrive/My Drive/mydict.joblib')

结果:

---------------------------------------------------------------------------
RecursionError                            Traceback (most recent call last)
<ipython-input-5-7edb860e5e4b> in <module>()
----> 1 dump(newdict,'/content/gdrive/My Drive/refs2019.joblib')

74 frames
... (skipped 134 stack entries. Use sys.last_value and sys.last_traceback to investigate further.) ...
... last 203 frames repeated, from the frame below ...

/usr/lib/python3.6/pickle.py in save(self, obj, save_persistent_id)
    519 
    520         # Save the reduce() output and finally memoize the object
--> 521         self.save_reduce(obj=obj, *rv)
    522 
    523     def persistent_id(self, obj):

RecursionError: maximum recursion depth exceeded in comparison

我已经试过好几次了。我在不同的运行时尝试过。我检查了我的谷歌驱动器没有满,它不是。我什至创建了一个大小相当的列表,并在同一运行时腌制它。效果很好。

有什么建议吗?我不知道该怎么办。也许以后再试一次?如果是这样的话,我会有点难过。

【问题讨论】:

    标签: python pickle google-colaboratory defaultdict


    【解决方案1】:

    好吧,这让我发疯了,但我最终想通了。 我有一个我认为是字符串的 defaultdict(list)。

    但实际上它们是调用 table.string 产生的某种美丽的汤对象。

    有点误导。显然它完全搞砸了任何酸洗。也搞砸了我对 json 转储的尝试。

    我通过将它们显式转换为字符串来修复它,现在它实际上会腌制。

    【讨论】:

    • 相信你也可以直接用.text代替.string再用str()进行投射。
    猜你喜欢
    • 2013-05-02
    • 2021-09-28
    • 2020-12-31
    • 2011-06-29
    • 2011-12-14
    • 2021-06-11
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多