Python 让JSON转储字典中的所有值,而不仅仅是一个值?
我一直在为这件小事大发雷霆。我只想使用Python 让JSON转储字典中的所有值,而不仅仅是一个值?,python,json,dictionary,printing,Python,Json,Dictionary,Printing,我一直在为这件小事大发雷霆。我只想使用json.dump将一组键和值打印到嵌套列表中的文件中。但是,每当我将键或值作为JSON嵌套列表中的变量时,它将只转储一个值。例如,这些是_字典项: ` 但当它打印到file.txt时,我得到的只是 `"Stuff":[ { "Model:" "iphone 3G", "Year:" "2008" } )` 我想把所有的型号和年份都打印到这个文件里。我该怎么做才能让它工作?转换为列表,然后将列表放入JSON,
json.dump
将一组键和值打印到嵌套列表中的文件中。但是,每当我将键或值作为JSON嵌套列表中的变量时,它将只转储一个值。例如,这些是_字典项:
`
但当它打印到file.txt时,我得到的只是
`"Stuff":[
{
"Model:" "iphone 3G",
"Year:" "2008"
}
)`
我想把所有的型号和年份都打印到这个文件里。我该怎么做才能让它工作?转换为列表,然后将列表放入JSON,或者它会做完全相同的事情吗
先谢谢你。这是我第一次发StackOverflow帖子,如果我遗漏了什么,我向你道歉。我对Python和JSON也很陌生,所以这并没有帮助我写这篇文章 在循环之前初始化dict对象,否则将覆盖同一对象
import json
MY['Stuff']=[]
for k,v in the_dictionary.items():
model = (k)
year = (v)
MY['Stuff'].append({
"Model": (model),
"Year": (year)
})
print(MY)
print(json.dumps(MY))
输出:
'{"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)
当您创建json位时,您需要一个appraoch,然后将其写入文件,如果您真的需要,请将文件访问保持在一个循环中,否则您只需在循环结束后添加最后一个值 这可能是一个练习,但任何接近字典和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)
什么是BT?我看不出它的定义。您还在
for
循环中不断覆盖model
和year
。您的My dict仅包含一项。另外,你能展示一下你的json看起来是什么样子吗?E也没有叫做json
的模块,你是说import json
?1。修正了BT,那应该是我的。2.为什么它只包含一个项目?我在字典里放了多个条目。JSON是介于MY={}和})
3之间的所有内容。我所要做的就是显示我正在使用JSON。除了这件小事之外,所有的事情都在这上面起作用。我知道这不是很好的代码,但这正是我所拥有的。为什么要以“a+”的形式打开一个文件?这会导致Python3.6中出现KeyError。untitled1.py”,第7行,在我的['Stuff'].append({keyrerror:'Stuff'没有粘贴初始化内容。好的捕获:)解决了OP问题,但希望他能求助于更简单的数据结构。那会很好,但我想我应该透露我想分别打印密钥和值,这样我可以在以后得到它时添加更多信息。嗯……你可以做很长的路,也可以使用嵌套结构,但imhoMY
没有添加有用的信息对模型的信息、格式或功能进行编辑,当你多次写入文件时,它也有被过度扩展的风险。也许你还有其他的任务(如列出库存手机),你需要另一个编辑,至于模型,你知道……你做的不是一件有意义的事情,至少看起来不是这样。
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)