首页 > 解决方案 > 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

解决方案


这应该在 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"]}'

推荐阅读