python - Python json.dump 因字典而失败
问题描述
我正在尝试将 Python 字典以 json 表示法写入文件。这就是我尝试过的方法:
def write_to_json(self, data):
with open('dict.json', 'w') as file:
json.dump(data, file)
但是,该dump
方法对我的字典失败。它说:
TypeError: key 23 is not a string
这(确实)是正确的,应该是正确Integer
的,但是因为数据最初是从 csv 文件中读取并被操纵的,所以我不能保证,所以我需要转换它们。
如何将字典中的每个项目(键和值)转换为字符串?
这是字典的示例(它基本上是键 -> 列表):
{1: [5,6,8,6], 2: [7,8,9]...}
解决方案
这应该在 python 2 中做你想要的
json.dump({str(k): map(str, v) for k, v in data.iteritems()}, file)
和蟒蛇 3
json.dump({str(k): list(map(str, v)) for k, v in data.items()}, file)
请注意,检查此工作的一种简单方法是使用该json.dumps
方法作为测试,例如
In [489]: data = {1: [5,6,8,6], 2: [7,8,9]}
In [490]: json.dumps({str(k): map(str, v) for k, v in data.iteritems()})
Out[490]: '{"1": ["5", "6", "8", "6"], "2": ["7", "8", "9"]}'
推荐阅读
- java - 如何修复错误 java.lang.ArrayIndexOutOfBoundsException?
- elasticsearch - Elasticsearch 日期范围问题
- python - 如何检查 Numpy 数组是否是另一个更大数组的子数组
- git - Git:在特性分支中压缩或变基时,为什么需要将它与另一个分支(如 master)进行比较?
- git - 是否可以将 git filter-branch 与脏工作目录一起使用?
- mysql - 可以在 MySQL 中使用“For Each”循环来生成带有变量的临时表吗?
- php - 从内部(第二级)页面提交表格
- bash - 如何计算属于集群的序列?(来自 cd-hit 输出)
- arduino - 我正在尝试使用电报机器人库配置电报机器人,但出现错误
- angular - 将字符串转换为类打字稿/角度