[Tutor] Help with a Dictionary
Gerard Flanagan
grflanagan at gmail.com
Thu Jan 7 17:41:44 CET 2010
Garry Bettle wrote:
> Howdy all,
>
> I hope this message finds you all well.
>
> I have a list that I output in the following order:
>
> 2010-01-07 1103 Sund A7 450m
> 2010-01-07 1111 Sheff A7 500m
> 2010-01-07 1119 Sund A6 450m
> 2010-01-07 1128 Sheff A6 500m
> 2010-01-07 1134 Sund A5 450m
> 2010-01-07 1142 Sheff A7 500m
> 2010-01-07 1148 Sund A5 450m
> 2010-01-07 1157 Sheff A6 500m
> 2010-01-07 1204 Sund A4 450m
> 2010-01-07 1212 Sheff A5 500m
> 2010-01-07 1218 Sund A4 450m
> 2010-01-07 1227 Sheff A3 500m
> 2010-01-07 1232 Sund A4 450m
> 2010-01-07 1242 Sheff A4 500m
> 2010-01-07 1247 Sund A4 450m
> 2010-01-07 1258 Sheff A3 500m
> 2010-01-07 1304 Sund A3 450m
> 2010-01-07 1312 Sheff A4 500m
> 2010-01-07 1319 Sund HC 640m
> 2010-01-07 1327 Sheff A5 500m
> 2010-01-07 1333 Sund A3 450m
> 2010-01-07 1344 Sheff A3 500m
> 2010-01-07 1351 Sund A2 450m
> 2010-01-07 1403 Sheff A2 500m
> 2010-01-07 1408 Romfd A7 400m
> 2010-01-07 1418 Crayfd S8 540m
> 2010-01-07 1427 Romfd A6 400m
> 2010-01-07 1437 Crayfd H3 380m
> ... etc.
>
> The above are RaceDate + RaceTime + Fixture + RaceDetails, and are
> output in RaceTime order.
>
> What I'd like to do, is output a transposed-like summary of just the
> Fixture + RaceTime.
>
> i.e.
>
> Sund 1103 1119 1134 1148 1204 1218 1232 1247 1304 1319 1333 1351
> Sheff 1111 1128 1142 1157 1212 1227 1242 1258 1312 1327 1344 1403
> Romfd 1408 1427 ...
> Crayfd 1418 1437 ...
>
A defaultdict may help.
---------------------------------------------------
rawdata = """
2010-01-07 1103 Sund A7 450m
2010-01-07 1111 Sheff A7 500m
2010-01-07 1119 Sund A6 450m
2010-01-07 1128 Sheff A6 500m
2010-01-07 1134 Sund A5 450m
2010-01-07 1142 Sheff A7 500m
2010-01-07 1148 Sund A5 450m
2010-01-07 1157 Sheff A6 500m
2010-01-07 1204 Sund A4 450m
2010-01-07 1212 Sheff A5 500m
2010-01-07 1218 Sund A4 450m
2010-01-07 1227 Sheff A3 500m
2010-01-07 1232 Sund A4 450m
2010-01-07 1242 Sheff A4 500m
2010-01-07 1247 Sund A4 450m
2010-01-07 1258 Sheff A3 500m
2010-01-07 1304 Sund A3 450m
2010-01-07 1312 Sheff A4 500m
2010-01-07 1319 Sund HC 640m
2010-01-07 1327 Sheff A5 500m
2010-01-07 1333 Sund A3 450m
2010-01-07 1344 Sheff A3 500m
2010-01-07 1351 Sund A2 450m
2010-01-07 1403 Sheff A2 500m
2010-01-07 1408 Romfd A7 400m
2010-01-07 1418 Crayfd S8 540m
2010-01-07 1427 Romfd A6 400m
2010-01-07 1437 Crayfd H3 380m
"""
from collections import defaultdict
data = defaultdict(list)
for line in rawdata.splitlines():
if line:
parts = line.split()
data[parts[2]].append(parts[1])
for item in data.iteritems():
print item
----------------------------------------------
If you have multiple dates, then itertools.groupby may be of use.
G.
More information about the Tutor
mailing list