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问题,但希望他能求助于更简单的数据结构。那会很好,但我想我应该透露我想分别打印密钥和值,这样我可以在以后得到它时添加更多信息。嗯……你可以做很长的路,也可以使用嵌套结构,但imho
MY
没有添加有用的信息对模型的信息、格式或功能进行编辑,当你多次写入文件时,它也有被过度扩展的风险。也许你还有其他的任务(如列出库存手机),你需要另一个编辑,至于模型,你知道……你做的不是一件有意义的事情,至少看起来不是这样。
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)