Python:字典到 Json 文件

Posted

技术标签:

【中文标题】Python:字典到 Json 文件【英文标题】:Python: Dictionary into Json file 【发布时间】:2017-03-25 03:50:18 【问题描述】:

我有以下字典

a = 'index': [1, 2, 3], 'similar': [[0, 2], [1, 2], [2, 1]], 'markets': [['A', 'C'], ['B', 'C'], ['A', 'B']]
keys = ['index', 'similar', 'markets']

我希望它把它转换成一个 json 文件

喜欢

'index': 'elem1' , "similar" :  [ 'elem0' 'elem2' ]  , "markets" : ['marketA', 'marketC'] 
'index': 'elem2  , "similar" :  [ 'elem1' 'elem2' ]  , "markets" : ['marketB', 'marketC'] 
'index': 'elem3' , "similar" :  [ 'elem2' 'elem1' ]  , "markets" : ['marketA', 'marketB'] 

我现在有

with open('result.json', 'w') as fp:
    json.dump(a, fp)

但我不确定如何获得理想的结果

任何帮助将不胜感激

【问题讨论】:

您的输出显示多个由换行符分隔的 json blob。因此,它不是“一个 json 文件”,而是“一个包含许多行分隔的 json 对象的文件”。那是你要的吗?如果是这样,您如何获得这些多个字典?您可以多次以附加模式打开文件或一次写入多个字典。 是的,我想要一个包含许多 json 对象的文件 好的,所以你想做一些转换。你应该向我们展示你到目前为止所做的事情,并且可能包括一些关于转换是什么的提示。 SO 通常不是代码编写服务。 【参考方案1】:

您必须调整当前所需输出的结构。您的相似数组和市场数组包含集合 (['elem0', 'elem2' ]),这在 JSON 中当然是不可能的。

我已经为你编写了必要的代码。

import json
f = 'index': [1, 2, 3], 'similar': [[0, 2], [1, 2], [2, 1]], 'markets': [['A', 'C'], ['B', 'C'], ['A', 'B']]
res = 
for k,v in f.iteritems():
    for i, s_v in enumerate(v):
        if not res.get(i):
            res[i] = 
        if k == 'markets':
            prefix = 'market'
        else:
            prefix = 'elem'
        if isinstance(s_v, int):
            res[i][k] = '%s%s' % (prefix, s_v)
        else:
            res[i][k] = [[]]
            for _s_v in s_v:
                res[i][k][0].append('%s%s' % (prefix, _s_v))
            res[i][k][0] = res[i][k][0]
res = [v for k, v in res.iteritems()]
print json.dumps(res)

.. ["index": "elem1", "similar": [["elem0", "elem2"]], "markets": [["marketA", "marketC"]], "index": "elem2", "similar": [["elem1", "elem2"]], "markets": [["marketB", "marketC"]], "index": "elem3", "similar": [["elem2", "elem1"]], "markets": [["marketA", "marketB"]]]

【讨论】:

感谢您的建议,但它不会打印所需的输出。您的解决方案打印 "index": "elem1", "index": "elem2", "index": "elem3", "similar": [["elem0", "elem2"]] ,“相似”:[[“elem1”,“elem2”]],“相似”:[[“elem2”,“elem1”]],“市场”:[[“市场A”,“市场C "]], "markets": [["marketB", "marketC"]], "markets": [["marketA", "marketB"]]] 我已经更新了答案。请注意,您想要的输出不符合 JSON,JSON 不能保存元组/集合 (['elem1', 'elem2']) => 必须按以下方式输出: [['elem1', 'elem2 ']] 或者:['elem1', 'elem2'] 如果这样做,请将问题标记为正确。

以上是关于Python:字典到 Json 文件的主要内容,如果未能解决你的问题,请参考以下文章

python:用json把字典序列化到文件中

python 如何将字典对象保存到json文件的示例

追加到 json 中转储的字典列表,而不用 python 加载列表

请教商品列表保存在json文件中,如何在python中读取文件中并保存到字典中

python-字典有序并写入json文件

每小时从 JSON 文件更新 python 字典