在字典上测试Q(python)

时间:2012-04-19 21:33:01

标签: python file dictionary

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'的文件,以上面描述的格式,调用我们的函数来构建字典,并将字典pickle到一个名为'students.pck'的文件中。我们可以假设已导入cpickle并且已定义函数process_students

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

4 个答案:

答案 0 :(得分:1)

这项研究,我认为你会比阅读某人的解决方案更多地学习解决问题。好的出发点是查看csv module解析输入文件和python帮助中的教程部分,了解如何操作dictionaries

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

答案 1 :(得分:0)

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

请特别注意:http://docs.python.org/library/csv.html#csv.reader

这可能解释了reader param代表的r

答案 2 :(得分:0)

  

当我们从文本文件中取出行时,我们是否总是要删除它?

这是摆脱end-of-line角色的简单方法。我想你不需要它们。)

答案 3 :(得分: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"]

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