JSON 序列化以元组为键的字典

2023-12-15

Python 有没有办法序列化使用元组作为键的字典?

e.g.

a = {(1, 2): 'a'}

简单地使用json.dumps(a)引发此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/json/__init__.py", line 230, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.6/json/encoder.py", line 367, in encode
    chunks = list(self.iterencode(o))
  File "/usr/lib/python2.6/json/encoder.py", line 309, in _iterencode
    for chunk in self._iterencode_dict(o, markers):
  File "/usr/lib/python2.6/json/encoder.py", line 268, in _iterencode_dict
    raise TypeError("key {0!r} is not a string".format(key))
TypeError: key (1, 2) is not a string

你不能将其序列化为 json,与 python 相比,json 关于什么算作 dict 键的灵活性要低得多。

您可以将映射转换为一系列键、值对,如下所示:

import json
def remap_keys(mapping):
    return [{'key':k, 'value': v} for k, v in mapping.iteritems()]
... 
json.dumps(remap_keys({(1, 2): 'foo'}))
>>> '[{"value": "foo", "key": [1, 2]}]'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON 序列化以元组为键的字典 的相关文章

  • 导入错误:无法导入名称“FFProbe”

    我无法获取ffprobe包 https github com simonh10 ffprobe在 Python 3 6 中工作 我使用 pip 安装它 但是当我输入import ffprobe it says Traceback most
  • GUI 测试工具 PyUseCase 与 Dogtail 相比如何?

    GUI测试工具如何Py用例 http pypi python org pypi PyUseCase重命名为故事文本 http pypi python org pypi StoryText 相比于Dogtail http en wikiped
  • docker 容器中的“(pygame parachute)分段错误”

    尝试在 docker 容器中使用 pygame 时出现以下错误 我想从容器中获取显示 Fatal Python error pygame parachute Segmentation Fault 重现 Docker已安装 docker ru
  • 从内存地址创建python对象(使用gi.repository)

    有时我需要调用仅存在于 C 中的 gtk gobject 函数 但返回一个具有 python 包装器的对象 之前我使用过基于 ctypes 的解决方案 效果很好 现在我从 PyGtk import gtk 切换到 GObject intro
  • Python 不考虑 distutils.cfg

    我已经尝试了给出的所有内容 并且所有教程都指向相同的方向 即使用 mingw 作为 python 而不是 Visual C 中的编译器 我确实有 Visual C 和 mingw 当我想使用 pip 安装时 问题开始出现 它总是给Unabl
  • 使用 Python 和 lmfit 拟合复杂模型?

    我想适合椭偏仪 http en wikipedia org wiki Ellipsometry使用 LMFit 将数据转换为复杂模型 两个测量参数 psi and delta 是复杂函数中的变量rho 我可以尝试将问题分离为实部和虚部共享参
  • Python,Google Places API - 给定一组纬度/经度查找附近的地点

    我有一个由商店 ID 及其纬度 经度组成的数据框 我想迭代该数据框 并使用 google api 为每个商店 ID 查找附近的关键地点 例如输入 Store ID LAT LON 1 1 222 2 222 2 2 334 4 555 3
  • Python Requests 库重定向新 url

    我一直在浏览 Python 请求文档 但看不到我想要实现的任何功能 在我的脚本中我设置allow redirects True 我想知道该页面是否已重定向到其他内容 新的 URL 是什么 例如 如果起始 URL 为 www google c
  • Scrapy 文件管道不下载文件

    我的任务是构建一个可以下载所有内容的网络爬虫 pdfs 在给定站点中 Spider 在本地计算机和抓取集线器上运行 由于某种原因 当我运行它时 它只下载一些但不是全部的 pdf 通过查看输出中的项目可以看出这一点JSON 我已经设定MEDI
  • 如何用函数记录一个文件?

    我有一个带有函数 lib py 但没有类的python 文件 每个函数都有以下样式 def fnc1 a b c This fonction does something param a lalala type a str param b
  • 在 Python 中从 Excel 复制 YEARFRAC() 函数

    因此 我使用 python 来自动执行一些必须在 Excel 中执行的重复任务 我需要做的计算之一需要使用yearfrac 这在Python中被复制了吗 I found this https lists oasis open org arc
  • 如何知道python运行脚本的路径?

    sys arg 0 给我 python 脚本 例如 python hello py 返回 sys arg 0 的 hello py 但我需要知道 hello py 位于完整路径中的位置 我怎样才能用Python做到这一点 os path a
  • 我可以用关闭的文件对象做什么?

    当您打开文件时 它存储在一个打开的文件对象中 该对象使您可以访问该文件的各种方法 例如读取或写入 gt gt gt f open file0 gt gt gt f
  • 将图与热图(可能是对数)配对?

    How to create a pair plot in Python like the following but with heat maps instead of points or instead of a hex bin plot
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 根据标点符号列表替换数据框中的标点符号[重复]

    这个问题在这里已经有答案了 使用 Canopy 和 Pandas 我有数据框 a 其定义如下 a pd read csv text txt df pd DataFrame a df columns test test txt 是一个单列文件
  • 如何在引发异常时将变量传递给异常并在异常时检索它?

    现在我只有一个空白的异常类 我想知道如何在引发变量时给它一个变量 然后在 try except 中处理它时检索该变量 class ExampleException Exception pass 为其构造函数提供一个参数 将其存储为属性 然后
  • 类返回语句不打印任何输出

    我正在学习课程 但遇到了问题return语句 它是语句吗 我希望如此 程序什么也没有打印出来 它只是结束而不做任何事情 class className def createName self name self name name def
  • py2exe ImportError:没有名为 的模块

    我已经实现了一个名为 myUtils 的包 它由文件夹 myUtils 文件 组成 init py 和许多名称为 myUtils 的 py 文件 该包包含在 myOtherProject py 中 当我从 Eclipse 运行它们时可以找到
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不

随机推荐

  • context.drawImage 行为异常

    I have
  • 如何从 Oracle 中的值列表中进行选择

    我指的是这个stackoverflow answer 如何从 SQL Server 中的值列表中进行选择 类似的事情怎么能在Oracle 我已经看到此页面上使用的其他答案UNION尽管这种方法在技术上可行 但我不想在我的案例中使用它 所以我
  • 写入 16 位 BufferedImage TYPE_USHORT_GRAY

    我正在尝试使用 BufferedImage TYPE USHORT GRAY 将 16 位灰度图像数据写入 png 通常我会像这样写入图像 BufferedImage image new BufferedImage width height
  • Azure 数据工厂 - 处理大小为 4194304 的查找活动限制

    我有一个天蓝色数据工厂管道 其中包含检查 JSON 文件的查找活动 天蓝色的尺寸如下所示 Azure 博客大小屏幕截图 当我下载它时 我看到该文件的以下值 因此它并不大于错误指出的值 查找活动结果的大小 5012186 超出了限制 4194
  • 如何在 Flot 饼图中显示小值

    我有简单的数据 label Test 1 data 1332 label Test 2 data 56187 label Test 3 data 2 label Test 4 data 2 label Test 5 data 42946 l
  • Java将字符串拆分为数组[重复]

    这个问题在这里已经有答案了 我需要帮助split 方法 我有以下内容String String values 0 0 0 1 0 1 0 我需要将值放入数组中 有 3 个可能的字符串 0 1 和 我的问题是 当我尝试使用split Stri
  • XSD:允许序列中任意位置的不同命名空间的元素

    我一直在尝试以下方法 我想为 XML 创建一个 XSD 其中某些元素只允许出现一次并且需要有效 并且其他命名空间中的元素允许在任何地方出现 并且没有必须用来验证的架构 应该允许的 XML
  • 使用数组的 AJAX Promise

    我正在尝试使用 Promise 进行多个 AJAX 调用 比方说 2 个 基本上我希望能够将两个响应合并在一起 对它们作为一个整体进行一些分析 然后吐出一个响应 现在 我有 var responseArray for var i 0 i
  • Vim 中的自动完成方法结构

    有谁知道是否有办法在 Vim 中自动完成一个方法 以 Ruby 为例 如果我输入 def my method 然后按 Enter 键 它将填充end并将光标移动到 x 所在的位置 def my method x end vim 纵向这样做
  • 实体框架 Code First 的 SQL Server Express 连接字符串

    我正在使用 Visual Web Developer 2010 Express 并使用实体框架代码优先 CTP 我可以使用新的 SQL Server CE 执行此操作 但无法找到与 SQL Server Express 一起使用的连接字符串
  • 如何在数据框列上进行标量乘法

    我确信这个就坐在我面前 但我看不到它 我有一个数据框 a 这样 gt a Chars Numbers This A 15 That B 22 Other C 18 我只想将 Numbers 列乘以一个标量 例如 b 不起作用的是 a b 尝
  • 如何使用 Alamofire 和 SwiftyJSON 访问嵌套 JSON 值?

    我正在尝试使用 swiftyJSON 和 Alamofire 访问嵌套的 JSON 结果 我的打印值为零 我相信我没有正确执行此操作 我的参数应该是什么 我正在尝试获取位于的报价值http quotes rest qod json func
  • 通过VBA控制Excel形式的数据库

    我正在尝试创建一个 Excel 插件 它具有一组函数来从数据库中提取值 我使用 MS SQL Server 所以我的查询将只返回一个记录集 我在我的 vba 代码中使用如下所示的内容 使用 Excel VBA 运行 SQL 查询 但问题是
  • 在 Pygame 中获取旋转图像的旋转矩形

    我有一个关于 pygame rect 的问题 矩形不是我想要的 我发现我可以用精灵类来做到这一点 但我不想使用精灵 我不明白 Sprite 矩形和图像矩形的区别 I want to get rect like this But I am g
  • C# 等待用户在文本框中输入完毕

    C 中是否有一种方法可以等到用户在文本框中完成输入后再获取他们输入的值而不按 Enter 键 稍微修改一下这个问题 好吧 我有一个简单的乘以 2 的计算器 这是我想要它做的事情 用户在文本框中输入一个值 例如 1000 它会自动显示 200
  • R脚本从谷歌分析导入数据

    我正在尝试通过 R studio 服务器上运行的脚本连接到 google analytic s API 我已按照本教程中的步骤操作 http www r bloggers com how to extract google analytic
  • 将 && \ 添加到文本文件中除最后一行之外的每一行

    我正在尝试添加 在文本文件中除最后一行之外的每一行的末尾 输入示例 ps mkdir repo cd repo touch file1 txt 预期输出 ps mkdir repo cd repo touch file1 txt 第一次尝试
  • 如何在使用 QnA 机器人时对其进行训练?

    我使用 bot framework SDK3 和 QnAmaker 服务制作了一个 QnA 机器人 据我所知 我们可以训练我们的知识库 但我不知道如何在团队等其他渠道中使用我的 QnA 机器人时对其进行训练 我想我可以让用户判断机器人的回答
  • subprocess.call() 和 os.system() 之间的速度差异

    执行速度是否有任何差异subprocess call and os system 命令 假设命令本身完全相同 我知道有很多帖子谈论子流程的好处及其原因os system 应该被抛弃 但没有人提到它们的速度 据我了解 子流程远不及包装器os
  • JSON 序列化以元组为键的字典

    Python 有没有办法序列化使用元组作为键的字典 e g a 1 2 a 简单地使用json dumps a 引发此错误 Traceback most recent call last File