【发布时间】:2018-08-17 12:02:01
【问题描述】:
我很兴奋,因为我从朋友那里得到了一些提示。我正在尝试使用循环创建字典字典。我正在使用的 csv 的日期为 2008 年至 2014 年,我使用日期作为键。 csv 看起来像这样:
年份,title_field,值
2014,Total Housing Units,49109
2014,Vacant Housing Units,2814
2014,Occupied Housing Units,46295
2013,Total Housing Units,47888
2013,Vacant Housing Units,4215
2013,Occupied Housing Units,43673
2012,Total Housing Units,45121
2012,Vacant Housing Units,3013
2012,Occupied Housing Units,42108
2011,Total Housing Units,44917
2011,Vacant Housing Units,4213
2011,Occupied Housing Units,40704
2010,Total Housing Units,44642
2010,Vacant Housing Units,3635
2010,Occupied Housing Units,41007
2009,Total Housing Units,39499
2009,Vacant Housing Units,3583
2009,Occupied Housing Units,35916
2008,Total Housing Units,41194
2008,Vacant Housing Units,4483
2008,Occupied Housing Units,36711
这是我的代码:
import csv
denton_housing = {}
filename = 'denton_housing.csv'
key = 2014
with open(filename, 'r', encoding='utf8', newline='') as f:
for row in csv.DictReader(f, delimiter=','):
while key not in denton_housing:
denton_housing[key] = {}
denton_housing[key][row['title_field']] = int(row['value'])
key-1
当我打印出来时,我得到:
{2014: {'Total Housing Units': 49109}}
这太棒了!但我需要这个:
{2014: {'Total Housing Units': 49109}, {'Vacant Housing Units': 2814}, \ {'Occupied Housing Units': 46295}}
更重要的是,我需要它在 2013 年、2012 年、2011 年、2010 年、2009 年和 2008 年循环并执行相同的操作,但到此为止。
【问题讨论】:
-
您显示为所需结果的数据结构不是有效的python。您可能想要的是一个字典,其中的值是字典列表。这看起来像 {2014: [{'Total Housing Units': 49109}, {'Vacant Housing Units': 2814], 2015: [...]} 注意额外的方括号。小改变,大不同!
-
您是否想要一个将 2014 映射到三个单键 dict 元组的字典,如您所展示的那样,或者一个将 2014 映射到具有三个键的字典的字典,这可能是更有用?
标签: python loops csv dictionary