[EMAIL PROTECTED] wrote: > import csv > temp1 = [] > temp2 = [] > reader = csv.reader(file(r"py_monsters.csv")) > for rec in reader: > temp1.append(rec) > for i in temp1[1:]: > temp2.append((i[0],dict(zip(temp1[0][1:],i[1:])))) > monsters = dict(temp2)
I would tend to write this as: import csv reader = csv.reader(file(r"py_monsters.csv")) labels = reader.next()[1:] monsters = dict((row[0], dict(zip(labels, row[1:]))) for row in reader) which I believe gives equivalent output: py> csv_text = """\ ... name,hardiness,agility,friend,courage,room,weight,special_def_odds,armor,weapon,odds,dice,side,hits,reaction,desc ... PIRATE,5,20,0,10,26,300,0,0,11,60,1,10,0,"not met",You see a man with a beard and a brass ring in his ear. He is wearing clothes made of silk and is wielding a very fancily engraved sword.""" py> f = StringIO.StringIO(csv_text) py> reader = csv.reader(f) py> labels = reader.next()[1:] py> monsters = dict((row[0], dict(zip(labels, row[1:]))) ... for row in reader) py> monsters {'PIRATE': {'reaction': 'not met', 'agility': '20', 'room': '26', 'weight': '300', 'armor': '0', 'weapon': '11', 'hits': '0', 'side': '10', 'special_def_odds': '0', 'courage': '10', 'hardiness': '5', 'desc': 'You see a man with a beard and a brass ring in his ear. He is wearing clothes made of silk and is wielding a very fancily engraved sword.', 'odds': '60', 'friend': '0', 'dice': '1'}} STeVe -- http://mail.python.org/mailman/listinfo/python-list