Python json.dump字典失败

时间:2018-09-13 15:34:05

标签: python

我正在尝试将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]...}

1 个答案:

答案 0 :(得分:1)

这应该可以在python 2中完成您想做的事情

json.dump({str(k): map(str, v) for k, v in data.iteritems()}, file)

和python 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"]}'