有证据表明,Python的搁置模块要求所有密钥都是字符串,并且有各种变通方法(参见线程here和here)。我的问题是,为什么搁置需要字符串键?鉴于我可以腌制一个使用其他物体作为键的字典,并且搁架在引擎盖下使用泡菜,为什么不能搁置这些键本身呢?字符串键使得仅更新持久对象的一部分而不是必须重写整个事物(如果是这样,为什么)会非常简单?
答案 0 :(得分:3)
因为在底层,shelve模块使用bsddb,gdbm或dbm之一进行存储,并且它们仅支持字符串键。
你是对的,你可以挑选一个使用其他对象作为键的dict,但是当一个键改变时,你必须刷新整个存储。通过使用像这样的键值数据库,只刷新更改的值。