<p>我认为您的输入CSV文件可能是由制表符分隔的,而不是空格。如果是这样的话,那么这似乎会以您想要的格式生成JSON:</p>
<pre><code>from collections import defaultdict, OrderedDict
import csv
import json
output = defaultdict(list)
with open('county_state.csv', 'rb') as csv_file:
reader = csv.DictReader(csv_file, delimiter='\t')
for row in reader:
output[row['state_name']].append(
OrderedDict((
(fieldname, row[fieldname]) for fieldname in reader.fieldnames
if fieldname != 'state_name')))
# sort the output by state (optional)
output = OrderedDict(((state, counties) for state, counties in
sorted(output.iteritems())))
print json.dumps(output, indent=2)
</code></pre>
<p>输出:</p>
<pre class="lang-none prettyprint-override"><code>{
"Alabama": [
{
"county_name": "Autauga County",
"fips": "01001",
"fips2": "'01001'"
},
{
"county_name": "Baldwin County",
"fips": "01003",
"fips2": "'01003'"
},
{
"county_name": "Barbour County",
"fips": "01005",
"fips2": "'01005'"
}
],
"Florida": [
{
"county_name": "Putnam County",
"fips": "12107",
"fips2": "'12107'"
},
{
"county_name": "St. Johns County",
"fips": "12109",
"fips2": "'12109'"
},
{
"county_name": "St. Lucie County",
"fips": "12111",
"fips2": "'12111'"
},
{
"county_name": "Santa Rosa County",
"fips": "12113",
"fips2": "'12113'"
}
],
"Iowa": [
{
"county_name": "Emmet County",
"fips": "19063",
"fips2": "'19063'"
},
{
"county_name": "Fayette County",
"fips": "19065",
"fips2": "'19065'"
},
{
"county_name": "Floyd County",
"fips": "19067",
"fips2": "'19067'"
},
{
"county_name": "Franklin County",
"fips": "19069",
"fips2": "'19069'"
},
{
"county_name": "Fremont County",
"fips": "19071",
"fips2": "'19071'"
},
{
"county_name": "Greene County",
"fips": "19073",
"fips2": "'19073'"
},
{
"county_name": "Grundy County",
"fips": "19075",
"fips2": "'19075'"
},
{
"county_name": "Guthrie County",
"fips": "19077",
"fips2": "'19077'"
},
{
"county_name": "Hamilton County",
"fips": "19079",
"fips2": "'19079'"
},
{
"county_name": "Hancock County",
"fips": "19081",
"fips2": "'19081'"
}
]
}
</code></pre>