我一直在为这个小东西扯掉头发。我要做的就是使用json.dump
将一组键和值打印到嵌套列表中的文件中。但是,每当我在JSON嵌套列表中使键或值成为变量时,它只会转储一个值。例如,这些是 the_dictionary 项目:
the_dictionary = {'iphone 3G': 2008, 'iphone 4S': 2011, 'iphone 3GS': 2009,
'iphone 5': 2012, 'iphone 4': 2010}
import json
for k,v in the_dictionary.items():
model = (k)
year = (v)
MY = {}
MY['Stuff'].append({
"Model": (model),
"Year": (year),
})
with open('file.txt', 'a+') as f:
json.dump(MY, f, indent=3, ensure_ascii=False)
`
但是当它打印到file.txt时,我得到的只是...
`"Stuff":[
{
"Model:" "iphone 3G",
"Year:" "2008"
}
)`
我要所有所有型号和年份打印到此文件。我该怎么做才能使这项工作?转换为列表,然后将列表放入JSON中,还是会做完全相同的事情?
先谢谢您。这是我的第一个StackOverflow帖子,因此,如果我错过了任何内容,我深表歉意。我对Python和JSON还是很陌生,所以这对我写这篇文章没有帮助!
答案 0 :(得分:0)
在循环之前对dict对象进行详细信息化,否则将覆盖同一对象。
'{"Stuff": [{"Model": "iphone 4S", "Year": 2011}, {"Model": "iphone5", "Year": 2012}, {"Model": "iphone 3GS", "Year": 2009}, {"Model": "iphone 4", "Year": 2010}, {"Model": "iphone 3G", "Year": 2008}, {"Model": "iphone 4S", "Year": 2011}]}'
输出:
with open('file.txt', 'a+') as f:
json.dump(MY, f, indent=3, ensure_ascii=False)
然后您可以将其写入文件
<rootnode>
Some text <node1>A Name</node1> some more text <node2>A value</node2>
</rootnode>
答案 1 :(得分:0)
创建json的位时要花点时间,然后将其写入文件(如果确实需要)-将文件访问保持在一个循环中,否则只需在循环结束后添加最后一个值即可。
这可能是一个练习,但是任何与字典和JSON的实际使用接近的事情都需要创建字典,然后将其全部转储到json。
代码中更卑鄙的部分似乎是这样:
import json
models_dict = {'3G': 2008,
'4S': 2011,
'3GS': 2009,
'5': 2012,
'4': 2010}
with open('models.json', 'w') as f:
json.dump(models_dict, f, indent=3, ensure_ascii=False)