将密钥对从Python字典列表转换为JSON文件

时间:2018-04-26 15:45:19

标签: python json python-3.x list dictionary

我有一个字典列表的JSON文件,我试图从每个字典中提取一个特定的密钥及其值,并将它们写回到JSON格式的文件中。

在我目前的代码中,我循环遍历字典并将它们一起添加到json文件中。我手动创建json格式,但键值被写为字符串。我怀疑它与我的dump(s)函数有关。但有没有更有效的方法直接将我的键值从python词典转换为json词典?

这是我目前的输出:

x.depth >= y.depth

这是我的预期输出:

{
    "text: red"            #returns a string
},
{
    "text: yellow"
},
{
    "text: blue"
}

我目前的代码:

{
    "text": "red"        #returns json formatted key-value pair
},
{
    "text": "yellow"
},
{
    "text": "blue"
}

我当前的词典列表为“text.json”:

with open(join(dirname(__file__),'text.json')) as tone_json:
python_obj = json.load(tone_json)          #read file object into string
my_list = python_obj["data"]               #assign list name to string
for dictionary in my_list:                 #loop through dictionaries in list
    for key,value in dictionary.items():   #loop through key pairs in dictionaries
        if key == "text":
            with open('comments.json', 'a') as f:            #append each pair
                f.write("{\n") .                             #write key pair objects as json formatted stream to json file
                json.dump("{}: {}".format(key,value), f)     #format key-values
                f.write("\n},\n")

2 个答案:

答案 0 :(得分:2)

你正在思考解决方案。您可以将其缩短为简单的列表压缩:

with open(join(dirname(__file__),'text.json')) as tone_json:
    j = json.load(tone_json)
    out = [{'text': d.get('text', 'none')} for d in j.get('data', [])]

with open('comments.json', 'a') as f:
    json.dump(out, f, indent=2)  

答案 1 :(得分:0)

对于JSON我是新手,所以我可能完全错了......

但是,如何实现引用的简单更改可以解决当前代码的问题吗?

json.dump('"{}": "{}"'.format(key,value), f)

任何反馈都将不胜感激。我也在学习。