我想在python中创建一个字典

时间:2012-10-25 02:07:51

标签: python dictionary list-comprehension

需要提交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

是整个投诉被分解为一个删除了\ t字符的列表。如果有人能指出我正确的方向,那将非常感激

2 个答案:

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

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