我有一个字典列表的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")
答案 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)
任何反馈都将不胜感激。我也在学习。