最近在做数据分析的练习时,对一段python代码中的for循环不是很理解,代码如下:print('修正数据类型(数据清理)')importunicodecsvfromdatetimeimportdatetimeasdtdefread_csv(filename):withopen(filename,'rb')asf:reader=unicodecsv.DictReader(f)returnlist(reader)defparse_date(date):#将字符串的date转换成python的日期时间对象ifdate=='':#检查日期是否为空字符串returnNoneelse:returndt.strptime(date,'%Y-%m-%d')#将字符串解析成日期daily_engagement=read_csv('daily-engagement.csv')print(daily_engagement[0])#清理engagement的数据类型forengagement_recordindaily_engagement:engagement_record['utc_date']=parse_date(engagement_record['utc_date'])print('\n每日参与学生数据:')print(daily_engagement[0])结果输出如下:修正数据类型(数据清理)OrderedDict([('acct','0'),('utc_date','2015-01-09'),('num_courses_visited','1.0'),('total_minutes_visited','11.6793745'),('lessons_completed','0.0'),('projects_completed','0.0')])每日参与学生数据:OrderedDict([('acct','0'),('utc_date',datetime.datetime(2015,1,9,0,0)),('num_courses_visited','1.0'),('total_minutes_visited','11.6793745'),('lessons_completed','0.0'),('projects_completed','0.0')])在读取了daily-engagement.csv文件后,打印变量daily_engagement[0]时,('utc_date','2015-01-09')中的日期还只是字符串我的问题是,在对变量daily_engagement进行遍历后,为什么在打印同样的daily_engagement时,里面的utc_date就变成了datetime.datetime(2015,1,9,0,0)?我在看这个for循环的时候只看出了对变量engagement_record作了修改,看不出有对daily_engagement作赋值之类的操作,但却能够打印修改后的结果请大神指教个中原理,谢谢!
互换的青春
杨魅力
相关分类