我正在处理CSV文件数据,我需要将其拆分为字典。我使用以下代码:
ga_session_data = {}
ga_pageviews_data = {}
file = open('files/data.csv', 'r')
for 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
循环中更改:收件人:
^{pr2}$您不能在初始的空字典中添加任何内容。每次都要用新的词典替换它们:
这是两个新字典,每个字典都有一个键值对。最后,在处理完文件中的最后一行之后,剩下的是文件中最后一行的信息,以及在替换之前处理过的所有内容。在
如果要添加到初始词典,请使用赋值键:
^{pr2}$您可以将
int()
转换内联到赋值表达式中:{{cd3>不需要多加空格。在
接下来,我不会重新发明CSV阅读轮;使用^{} module :
我还将file对象用作上下文管理器,因此您不再需要显式地调用
file.close()
。在问题
它正在印刷整本词典。您的问题在于创建字典时的循环:
这将在循环的每次迭代之后创建一个新字典,因此在最后,您只需要一个字典,其中最后一页对应于最后一个会话。在
解决方案
在循环中使用以下语法:
^{pr2}$现在您的代码将添加到字典中,而不是简单地创建一个新的。这是因为您在顶部定义了字典,循环末尾的语法是在同一个字典中创建一个新的键值对,而不是像以前那样创建一个新的字典并将其分配给同一个变量。在
相关问题 更多 >
编程相关推荐