如何在字典中创build字典

我有下面的代码:

datedict = defaultdict(set) with open('d:/info.csv', 'r') as csvfile: filereader = csv.reader(csvfile, 'excel') #passing the header read_header = False start_date=date(year=2009,month=1,day=1) #print((seen_date - start_date).days) tdic = {} for row in filereader: if not read_header: read_header = True continue # reading the rest rows name,id,firstseen = row[0],row[1],row[3] try: seen_date = datetime.datetime.strptime(firstseen, '%d/%m/%Y').date() deltadays = (seen_date-start_date).days deltaweeks = deltadays/7 + 1 key = name +'-'+id currentvalue = tdic.get(key, []) currentvalue.append(deltaweeks) tdic[key] = currentvalue except ValueError: print('Date value error') pass tdic = dict((name, max(weeks) - min(weeks) + 1) for name, weeks in tdic.iteritems()) pprint.pprint(tdic) 

在其中我得到了以下结果:

 {'Mali-2': 20, 'Gooki-3': 6, 'Piata-4': 6, 'Goerge-5': 4, 'Samoo-6': 1, 'Marria-7': 2} 

现在我想写一个excel文件,把这三个项目,名称,id和周作为单独的列打印出来。 任何人都知道如何可能?

 >>> with open('out.csv', 'w') as f: w = csv.writer(f) for k, v in tdic.iteritems(): name, id_ = k.split('-') weeks = v w.writerow([name, id_, weeks]) >>> with open('out.csv') as f: print f.read() Piata,4,6 Mali,2,20 Goerge,5,4 Gooki,3,6 Samoo,6,1 Marria,7,2 

然而,我不喜欢你这样做的方式,下面是你的代码的一些build议:

 key = name +'-'+id 

而不是使用string操作来创build一个键,使用一个tuple

 key = (name, id) 

改变这一行:

 tdic = dict((name, max(weeks) - min(weeks) + 1) for name, weeks in tdic.iteritems()) 

只是说

 tdic = dict((key, max(weeks) - min(weeks) + 1) for key, weeks in tdic.iteritems()) 

从现在开始,它是(name, id_)的关键,我们应该反映(这是一件小事,但很重要)

那么上面的代码就简单了

 >>> with open('out.csv', 'w') as f: w = csv.writer(f) for (name, id_), weeks in tdic.iteritems(): w.writerow([name, id_, weeks]) 

你可以像这样定义字典的字典:

 a_dict = {key: { anotherKey: value}} 

或者如果字典已经存在:

 a_dict[key] = {anotherkey: value} print a_dict[key][anotherkey]