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

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -