Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中循环使用字典并以JSON格式保存结果-无效格式_Python_Json_Dictionary - Fatal编程技术网

如何在python中循环使用字典并以JSON格式保存结果-无效格式

如何在python中循环使用字典并以JSON格式保存结果-无效格式,python,json,dictionary,Python,Json,Dictionary,我在Python中循环遍历一个列表和一个字典,将数据存储在另一个字典中,并使用json.dump将数据写入json文件。我的JSON输出有点差,有一些额外的大括号和缺少的注释。这是我的循环: for zip_code in zip_codes: for key, code in census_codes.iteritems(): stats[key] = c.acs.zipcode(('NAME', code), zip_code)[0][code] zip_stats =

我在Python中循环遍历一个列表和一个字典,将数据存储在另一个字典中,并使用json.dump将数据写入json文件。我的JSON输出有点差,有一些额外的大括号和缺少的注释。这是我的循环:

for zip_code in zip_codes:
  for key, code in census_codes.iteritems():
      stats[key] = c.acs.zipcode(('NAME', code), zip_code)[0][code]

  zip_stats = {}
  zip_stats[zip_code] = stats
  json.dump(zip_stats, ofile, indent=4) 
以下是输出:

{
    "10001": {
        "total_population": "21097", 
        "widowed": "580", 
        "now_married": "4595", 
        "divorced": "4595", 
        "housing_units": "756", 
        "some_college": "2404", 
        "seperated": "346", 
        "hs_graduate": "1359", 
        "graduate": "4305", 
        "total_females": "11024", 
        "total_males": "10073", 
        "bachelors": "5705", 
        "average_age": "34.6", 
        "never_married": "11964"
    }
}{
    "10012": {
        "total_population": "28982", 
        "widowed": "1538", 
        "now_married": "14932", 
        "divorced": "14932", 
        "housing_units": "799", 
        "some_college": "2574", 
        "seperated": "136", 
        "hs_graduate": "2622", 
        "graduate": "6510", 
        "total_females": "14668", 
        "total_males": "14314", 
        "bachelors": "7275", 
        "average_age": "42.8", 
        "never_married": "4743"
    }
}
为什么json.dumps()没有将输出格式化为有效的json

试试看:

zip_stats = {}
for zip_code in zip_codes:
    stats = {}
    for key, code in census_codes.iteritems():
        stats[key] = c.acs.zipcode(('NAME', code), zip_code)[0][code]
    zip_stats[zip_code] = stats
json.dump(zip_stats, ofile, indent=4) 

您的代码为每个
zip\u code
创建了一个新的
zip\u stats
字典,并将每个字典作为一个单独的
JSON
字符串写入。Mine只创建一次字典,添加两个stats字典,并且只执行一次
dump

它创建有效的JSON,但是您只需连接不同部分的输出。为什么不创建一个大字典并在最后转储它呢?@BrenBarn jsonlint说它是无效的-看起来有一些额外的大括号和缺少逗号…而且,zip_stats是用来收集所有数据的大字典。是的,这很有效!问题是字典是在哪里创建的。非常感谢。