2017-11-27 16 views
1

ランナーの番号、時間、名前、姓が格納された関数loadResultsを作成し、この情報を持つ辞書のリストを返します。辞書のキーは、「番号」、「名前」、「姓」、「時刻」です。これまでのところ私が持っている:csvから辞書を作成する際に助けが必要です

def loadResults(): 


    myFile = open("marathon.csv", "r") 

    number = [] 

    for line in myFile: 

     info = line.split(',') 
     s = {} 
     s['number'] = info[0] 
     s['time'] = info[1] 
     s['firstname'] = info[2] 
     s['surname'] = info[3:] 
     number.append(s) 

    myFile.close 

    return number 

私は、その後もランナーのリストとランナーの数を受信して​​、名前と時間を表示する機能displayTimeを記述する必要がありますが。私が持っているもの:

def displayTime(time,number,firstname): 

    for s in number: 
     if s['number'] == time: 
     print(s['name']) 


    runners = loadResults() 
    displayTime(number,'3070') 

残念ながら、私は残念なことに私はこの助けを借りて何か助けになると大変感謝しています。

+0

あなたのコードの書式設定を修正してください。 – SiHa

+0

サンプルデータを表示できますか? – Greg

+0

コード全体を投稿できますか?多分あなたのファイルを開く際に間違いがあります( "with"メソッドを使ってみましたか?) – Markus

答えて

1

あなたはcsv.DictReaderを使用することができます。

import csv 
with open('your_file') as csvfile: 
    reader = csv.DictReader(csvfile) 

その後readerは辞書です。 csvファイルは、最初の行のキーを持っていない場合は

あなたはfieldnamesを使用することができます。

import csv 
with open('your_file') as csvfile: 
    reader = csv.DictReader(csvfile, fieldnames=['number', 'name', 'surname', 'time'])