You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将键为元组的Python字典转换为JSON并访问键内元素

解决元组键字典转JSON报错问题

报错原因

JSON规范仅支持字符串、数字、布尔值、null作为键类型,不支持Python原生的元组类型,所以直接调用json.dumps会触发类型错误。

解决方案

核心思路是序列化时将元组键转换为带分隔符的字符串,反序列化时再将字符串还原为元组,既符合JSON格式要求,又能保留原元组的所有元素可访问。

基础实现代码

序列化(Python字典转JSON)

import json

d = {(300, 341): 4, (342, 426): 5}
# 元组键转为逗号分隔的字符串
serializable_dict = {','.join(map(str, key)): value for key, value in d.items()}
json_str = json.dumps(serializable_dict)
print(json_str)
# 输出:{"300,341": 4, "342,426": 5}

反序列化(JSON转回Python字典)

loaded_dict = json.loads(json_str)
# 字符串键还原为int类型元素的元组
restored_dict = {tuple(map(int, key.split(','))): value for key, value in loaded_dict.items()}
print(restored_dict)
# 输出:{(300, 341): 4, (342, 426): 5}

# 可正常访问元组键的元素
print(restored_dict[(300, 341)]) # 输出 4
print(list(restored_dict.keys())[0][0]) # 输出元组第一个元素 300

注意事项

  • 如果元组元素本身包含逗号,可替换为其他不会出现在元素中的分隔符(如||、#等特殊组合)
  • 如果元组元素类型不统一,需要对应调整反序列化时的类型转换逻辑

内容的提问来源于stack exchange,提问作者shee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:36:03