0
def process_students(r):

    '''r is an open reader with no data about students: their name, cdf account, age, college and 
       home city. Each line has the following format:
       name, cdf, age, college, city.

       there are no commas other than the ones used as separators.

       Return a dictionary in which each key is a college and its value is the list of cdf accounts 
       for students at that college'''

我对如何处理这个问题感到困惑。我正在做这个练习测试,这是问题之一。我从创建一个新字典开始。接下来我该怎么做?

    d = {}
    for line in r:
         line.strip()

当我们从文本文件中取出行时,我们是否总是需要剥离它?

问题的 b 部分也令人困惑。它告诉我们编写一个程序,以上述格式打开一个名为“students.txt”的文件,调用我们的函数来构建字典,并将字典腌制到一个名为“students.pck”的文件中。我们可以假设cpickle已经被导入并且该函数process_students已经被定义。

我不知道泡菜是什么。但是我什至无法完成第一个,所以我不知道如何继续进行第二个。

4

4 回答 4

1

这是学习,我认为您自己解决问题会比阅读某人的解决方案学到更多。好的起点是查看用于解析输入文件的csv 模块和 python 帮助中的教程部分以了解如何操作字典

import csv

def process_students(r):
    for row in csv.reader(r, delimiter=','):
        print row  # <-- rather than print, you should build dictionary here

我个人会使用 csv 模块。process_students 的另一个循环可能是:

    for line in r:
        row = line.strip().split(',')
        print row
于 2012-04-19T21:43:23.130 回答
0

当我们从文本文件中取出行时,我们是否总是需要剥离它?

这是摆脱行尾字符的简单方法。我想你不需要它们:)

于 2012-04-19T21:55:51.970 回答
0

显然,大多数人不愿意给你一个完整的解决方案,因为你没有从中学到很多东西,但该指南确实让事情变得相当简单。这里有一些指针...

1)你已经阅读了你的行。该行是一个字符串。使用字符串的 split 方法来划分成一个组件字符串列表。例如,"this,is,a,test".split(",") # => ["this", "is", "a", "test"]

2)访问列表的元素:

mylist = [1,2,3,4]
mylist[2] # => 3

#or map the values to variable names
a,b,c,d = mylist

3)字典使用起来很有趣:

mydict = {}
mydict['things'] = []
mydict['things'].append("foo")
mydict['other_things'] = ["bar"]

mydict['things'] # => ["foo"]
mydict['other_things'] # => ["bar"]

这些只是对有助于您的事情的一些提示。

于 2012-04-19T21:56:09.800 回答
0

查看用于读取数据文件的 Python CSV 模块,然后在处理每个 csv 行时,将值插入到字典中。http://docs.python.org/library/csv.html

特别是,看看这个:http ://docs.python.org/library/csv.html#csv.reader

这可能解释了参数所reader代表的r

于 2012-04-19T21:39:58.667 回答