0

500件の苦情のファイルを受け取り、苦情の番号をキーとして返し、車のメーカー、苦情の日付、クラッシュの真または偽、都市と州を値として含むタプルを返します。

 ex)   mydict("Complaints.txt")[416]
      ('CHRYSLER', datetime.date(1995, 1, 9), False, 'ARCADIA', 'FL')

これまでのところ、私は持っています:

 from collections import defaultdict
import datetime

def fieldict(filename):
    with open(filename) as f:
        x=[line.split('\t')[0].strip() for line in f] #list of complaint numbers
        y= line.split('\t') #list of full complaints
        d={}
        for j in x:
            Y= True
            N= False
            d[j] = tuple(y[2],datetime.date(y[7]), y[6], y[12], y[13])   #dict with number of complaint as key and tuple with index as values
        return d

y は、\t 文字が削除されたリストに分割された苦情全体です。誰かが私を正しい方向に向けることができれば、それは大歓迎です

4

2 に答える 2

3

csv モジュールを少し利用することもできます (未テスト):

import csv

def fieldict(filename):
    fullDict = {}
    with open(filename) as f:
        reader = csv.reader(f, delimiter='\t')
        for y in reader:
            fullDict[y[0].strip()] = (y[2],datetime.date(y[7]), y[6], y[12], y[13])
    return fullDict

if __name__ == "__main__":
    mydict = fieldict("Complaints.txt")
    print mydict[416]
于 2012-10-25T02:44:10.707 に答える
0

私があなたを正しく理解しているなら、これがあなたが探しているものだと思います。

import datetime

def fieldict(filename):
    returnDict = {}
    with open(filename) as f:
        for line in f:
            lineList = line.split('\t')
            index = lineList[0].strip()
            complaint = tuple(lineList[2],datetime.date(lineList[7]), lineList[6], lineList[12], lineList[13])

            returnDict[index] = complaint

    return returnDict

if __name__ == "__main__":
    mydict = fieldict("Complaints.txt")
    print mydict[416]
于 2012-10-25T02:37:21.823 に答える