2012-04-19 10 views
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''' 

この質問の使い方は混乱しています。私はこの練習テストをしており、これは質問の1つです。私は新しい辞書を作って始めました。私は次に何をしますか?辞書QのテストQ(

テキストファイルからラインを取り出すときは、常にストリップする必要がありますか?

問題のパートbも混乱します。上記の形式で 'students.txt'というファイルを開き、辞書を構築する関数を呼び出し、その辞書を 'students.pck'というファイルにpickleするプログラムを書くように指示します。 cpickleがインポートされており、その関数process_studentsが定義されていると仮定している可能性があります。

どのようなピクルスであるかわかりません。しかし、私も最初のものを終了することはできませんので、とにかく2番目のものでどのように続行するのか分かりません。

答えて

0

データファイルを読むためのPython CSVモジュールを見てから、各csv行を処理するときに、その値を辞書に挿入してください。特にhttp://docs.python.org/library/csv.html

が、これを見て:http://docs.python.org/library/csv.html#csv.reader

おそらくrのparamで表さreaderを説明すること。

+0

これはあまりにも複雑です。私はそれを理解していない、それに新しいことは、それ以上のものは私のためにprob too tooです。 – kungkung

+0

Pythonのドキュメントは、IDLEやipythonやdreampieのようなものを起動し、チュートリアルを掘り下げるのに最適です。 –

+1

実際には、特に言及しているように、セパレータとして使われているもの以外のコンマはありません。<<、私はline.split( "、")がcsvではなく、期待される解決策だと思います。もちろん、実際のプログラムでは、csvモジュールを使用します。 – ch3ka

1

これは研究であり、私はあなたが誰かの解決策を読むよりも、自分でそれをもっと解決する方法を学ぶと思います。良い出発点は、入力ファイルを解析するためのcsv moduleと、dictionariesの操作方法に関する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 
+0

mmm、どういうわけか、私はあなたが何をすべきかを少しガイドしてくれますか? – kungkung

+1

実際には、具体的に言及されているように、セパレータとして使われているもの以外のコンマはありません。<<、私はline.split( "、")がcsvではなく、期待される解決策だと思います。もちろん、実際のプログラムでは、csvモジュールを使用します。 – ch3ka

0

我々は、テキストファイルからのラインを取る、我々は常にそれを取り除くために持っているのですか?

これは、簡単にend-of-line文字を取り除く方法です。私はあなたがそれらを必要としないと思う:)

0

明らかにほとんどの人はあなたからそれほど多くを学ぶことがないのであなたに完全な解決策を与えるのは嫌ですが、ガイドは事をかなり簡単にします。ここにいくつかのポインタがあります...

1)あなたのラインを読みました。行は文字列です。文字列のsplitメソッドを使用して、コンポーネント文字列のリストに分割します。

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

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

これらはその意志物事の並べ替えに向けただけでいくつかのヒントがあります:

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

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

3)辞書を使用するのも楽しいです:例えば、"this,is,a,test".split(",") # => ["this", "is", "a", "test"]

2)は、リストの要素にアクセスするには助けます。