transforming list

james_027 cai.haibin at gmail.com
Tue Oct 23 22:46:12 EDT 2007


hi,

i have a list from a resultset like this
1,"Chicago Bulls",,,""
2,"Cleveland Caveliers",,,""
4,"Detroit Pistons",1,"23686386.35"
4,"Detroit Pistons",2,"21773898.07"
4,"Detroit Pistons",3,"12815215.57"
4,"Detroit Pistons",4,"48522347.76"
4,"Detroit Pistons",5,"28128425.99"
4,"Detroit Pistons",6,"15681603.08"
4,"Detroit Pistons",8,"12627725.03"
4,"Detroit Pistons",9,"11417.00"
4,"Detroit Pistons",10,"945689.22"
4,"Detroit Pistons",11,"818246.57"
4,"Detroit Pistons",12,"1154292.77"
5,"Phoenix Suns",1,"23211445.97"
5,"Phoenix Suns",3,"11268469.53"
5,"Phoenix Suns",4,"49913569.61"
5,"Phoenix Suns",5,"26035236.09"
5,"Phoenix Suns",7,"113953310.50"
5,"Phoenix Suns",8,"17091769.84"
5,"Phoenix Suns",10,"818569.99"
5,"Phoenix Suns",11,"824602.19"
5,"Phoenix Suns",12,"1142018.11"

and I wish to transform it into something like this

1, "Chicago Bulls", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
2, "Cleveland Caveliers", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4, "Detroit Pistons", 23686386.35, 21773898.07, 12815215.57,
48522347.76, 28128425.99, 15681603.08, 0, 12627725.03, 11417.00,
945689.22, 818246.57, 1154292.77
5, "Phoenix Suns", 23211445.97, 0, 11268469.53, 499113569.61,
26035236.09, 0, 113953310.50, 17091769.84, 0, 818569.99, 824602.19,
1142018.11

currently my solution is something like this the rows is the original
list which is list of list ... the report is a list of list with the
new arrangement that I want.

        report = []
        report_item = None
        temp_c_id = 0
        for row in rows:
            if not row[0] == temp_c_id:
                temp_c_id = row[0]
                if report_item: report.append(report_item)
                report_item = [row[0], row[1], 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0]
            if row[2]:
                report_item[row[2]+1] = row[3]

I feel this solution is not that good, can I make this more pythonic?!

Thanks
james :)




More information about the Python-list mailing list