transforming list

mensanator at aol.com mensanator at aol.com
Wed Oct 24 01:14:11 EDT 2007


On Oct 23, 9:46?pm, james_027 <cai.hai... at gmail.com> wrote:
> hi,
>
> i have a list from a resultset like this
> 1,"Chicago Bulls",,,""
> 2,"Cleveland Caveliers",,,""
   ^                     ^^^ ^
   |                     ||| |
   1                     234 5

How come these records have 5 fields...

> 4,"Detroit Pistons",1,"23686386.35"
   ^                 ^ ^            ^
   |                 | |            |
   1                 2 3            4

...whereas these only have 4 fields?


> 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