有据可查,Python 的 shelve 模块要求所有键都是字符串,并且有各种解决方法(请参阅线程here https://stackoverflow.com/questions/4013452/how-do-i-take-integer-keys-in-shelve and here https://stackoverflow.com/questions/2853113/database-backed-dictionary-with-arbitrary-keys/2854741#2854741)。我的问题是,why搁置需要字符串键吗?鉴于我可以腌制一个使用其他对象作为键的字典,并且 shelve 在引擎盖下使用 pickle,为什么 shelve 本身不能处理这些键?字符串键是否使仅更新持久对象的一部分而不必重写整个对象变得更加简单(如果是这样,为什么)?
因为在底层,shelve 模块使用 bsddb、gdbm 或 dbm 之一进行存储,并且它们仅支持字符串键。
你是对的,你可以腌制一个使用其他对象作为键的字典,但是当一个键发生变化时,你必须刷新整个存储。通过使用类似的键值数据库,只有更改的值才会被刷新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)