为什么Python的shelf要求所有键都是字符串?

2024-04-04

有据可查,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(使用前将#替换为@)

为什么Python的shelf要求所有键都是字符串? 的相关文章

随机推荐

  • NSIS - 静默自动更新应用程序

    我有一个适用于我的 net c 应用程序的 NSIS 安装工具包 考虑到我已经将新的更新 新的 NSIS 应用程序版本 下载到本地计算机 有没有办法静默自动更新我的应用程序 谢谢 如果您需要检测命令行 Autoupdate yes incl
  • 为什么Xcode找不到这个头文件?

    您好 我收到一个 xcode 没有这样的文件或目录 import Three20Core h 我还注意到 当我输入 import 语句时 它会识别并帮助自动完成 Three20Core h 文件 但是当我编译时出现错误 这是 Three20
  • Android proguard,设备上的空指针异常

    当我在手机上安装我的应用程序时 出现异常 它无需 proguard 即可工作 我的配置有什么问题 非常感谢 该配置是我在某处找到的默认 Android 配置 不知道发生了什么事 D AndroidRuntime 15388 Shutting
  • 将 Google 地图数据 API 与 iPhone 集成并执行搜索

    有人集成了 Google 的地图数据 API 吗here http code google com p gdata objectivec client 与iPhone应用程序 如果是这样 您能否分享一下框架代码 以便在我的应用程序中抢占先机
  • 有FlushFileBuffers和FILE_FLAG_NO_BUFFFERING不同用途的比较或者性能表吗?

    我将选择在每次写入文件后使用 FlushFileBuffers 或每次需要打开同一个文件时使用 FILE FLAG NO BUFFFERING 但我没有找到任何关于使用一个或另一个选项的性能比较表 好吧 除了这个建议in MSDN http
  • 错误:/lib64/libc.so.6:找不到版本“GLIBC_2.28”(/var/task/cryptography/hazmat/bindings/_rust.abi3.so 需要)

    我需要一个 傻瓜式 的答案来回答这个问题 我知道以前已经有人问过这个问题 我们正在为 AWS 托管的应用程序使用无服务器框架 Runtime python3 8得到了一个不错的大 yml 文件 其中包含 16 个函数 其中 2 个包含用于密
  • Jenkins Pipeline - 调用共享 jar 中的函数

    这是我的项目设置 一个单独的常规项目 多条管道 所有管道脚本均引用共享的 groovy 项目 我浏览了共享库以及所有需要在 Jenkins 全局配置中注册的需求 没有它有什么办法吗 我尝试使用 Grab 但最终出现错误 java lang
  • Word insertOoxml 方法返回错误:所有输入未知

    我有一个现有的 Word 加载项解决方案 该解决方案已经运行良好很长一段时间 但现在无法将 OOXML 内容插入到 Word 文档中 试图解决这个问题 我无法让 insertOoxml 方法在任何情况下工作 重现 await Word ru
  • 如何使用 Solr 选择不同的字段值?

    我想做与此 SQL 相同的操作 但使用 Solr 作为我的数据存储 SELECT DISTINCT txt FROM my table 什么语法会强制 Solr 只给我不同的值 http localhost 8983 solr select
  • Maven java 项目构建,但不运行

    我正在从头开始创建一个maven项目 首先学习如何使用maven 主项目不包含源代码文件 但它有两个模块 app 和 util 应用程序取决于 util 我想要一个来自应用程序的 jar 并且如果可能的话没有清单文件 我可以使用 mvn c
  • C# 替换字符串的一部分

    如何替换具有可能未知的起始索引的字符串的一部分 例如 如果我有以下字符串
  • 如何在数据框中添加新的计算列? [复制]

    这个问题在这里已经有答案了 我正在尝试根据我拥有的数据计算一个人的年龄 Data columns in Person Dataframe TodaysDate non null datetime64 ns YOB non null floa
  • 如何在 TimePickerDialog android 中禁用键盘?

    我在我的应用程序中使用时间选择器和日期选择器 我想在这两个中禁用键盘 我可以使用以下代码禁用日期选择器中的键盘 datePickerDialog getDatePicker setDescendantFocusability ViewGro
  • 简单参数化查询出错 - Java/ SQL

    继我之前的一个问题之后方法设计 https stackoverflow com questions 5490214 method design clarity or multifunction建议我将 SQL 查询实现为参数化查询 而不是简
  • Perl 中数组是如何实现的?

    Perl 数组是一种抽象数据类型 Perl数组的内部机制是什么 是用动态数组还是链表实现的 由于数组元素可以随机访问 因此我假设动态指针数组或对标量的引用是有意义的 但是 如果在数组头部进行移位和取消移位操作 数组是否必须通过这些操作移动其
  • 服务层相互依赖

    我正在设计一个使用服务层的 asp net mvc 应用程序 如果我们有一个服务依赖于另一个服务怎么办 例如 假设我们有以下模型 class UserService IUserService implementation requires
  • Angular ui-grid 表、客户端分页和滚动

    我正在尝试将一个小项目从 jquery 移植到 angularjs 我使用 DataTables 绘制从虚拟机接收到的诊断数据 这是一个示例 DataTables 可以轻松地对数据进行分页 这样做的好处是在导航时不捕获鼠标滚动 这是当页面包
  • 获取/读取 laravel 5.8 存储非公共文件夹文件以查看?

    尝试从我的视图访问 storage app folder1 a png public function viewStorageFiles fileFullPath Storage disk local gt path folder1 a p
  • Laravel 5.4 迁移错误

    我面临着一个无法解决的问题 我的应用程序使用 Ubuntu 16 04 PHP 7 1 MySQL 和 NGINX 托管在我的服务器上 我的应用程序运行完美 当我 ssh 到我的服务器和应用程序根目录时 我运行以下命令 php artisa
  • 为什么Python的shelf要求所有键都是字符串?

    有据可查 Python 的 shelve 模块要求所有键都是字符串 并且有各种解决方法 请参阅线程here https stackoverflow com questions 4013452 how do i take integer ke