Python 3 Can't print dictionary outside of for loop -
i working csv file data need split dictionaries. using following code:
ga_session_data = {} ga_pageviews_data = {} file = open('files/data.csv', 'r') line in file: page, sessions, pageviews = line.split(',') sessions = int(sessions.strip()) pageviews = int(pageviews.strip()) ga_session_data = {page: sessions} ga_pageviews_data = {page: pageviews} file.close() print(ga_session_data) print(ga_pageviews_data)
for reason cannot print of data stored in dictionaries outside of loop. prints first line each.
you not adding initial, empty dictionaries. replacing them each time new dictionary:
ga_session_data = {page: sessions} ga_pageviews_data = {page: pageviews}
that's 2 new dictionaries, each one key-value pair. in end, after last line in file has been processed, remains information last line in file, , processed before has been replaced.
if wanted add initial dictionaries, use assignment key:
ga_session_data[page] = sessions ga_pageviews_data[page] = pageviews
you inline int()
conversion assignment expression:
for line in file: page, sessions, pageviews = line.split(',') ga_session_data[page] = int(sessions) ga_pageviews_data[page] = int(pageviews)
note int()
doesn't care whitespace around digits, str.strip()
calls not needed.
next, i'd not re-invent csv reading wheel; use csv
module:
import csv ga_session_data = {} ga_pageviews_data = {} open('files/data.csv', 'r') csvfile: reader = csv.reader(csvfile) row in reader: page, sessions, pageviews = row ga_session_data[page] = int(sessions) ga_pageviews_data[page] = int(pageviews)
i used file object context manager, don't have explicitly call file.close()
on anymore.
Comments
Post a Comment