Brian van den Broek wrote:
> Morten Juhl Johansen said unto the world upon 16/09/06 08:29 AM:
>> # Newbie warning
>> I am making a timeline program. It is fairly simple.
>> I base it on appending lists to a list.
>> Ex.
>> [[year1, "headline1", "event text1"], [year2, "headline2", "event text2"]]
>>
>> This seemed like a brilliant idea when I did it. It is easy to sort.
>> Now, if I want to OUTPUT it, how do I indicate that I want to extract
>> first entry in a list in a list? How do I print the separate entries?
>>
>> Yours,
>> Morten
>>
>
> Hi Morten,
>
> Andrei answered the question you asked; I'd like to make a suggestion
> involving a bit of reworking.
>
> You might think about structuring your timeline data as a dictionary,
> rather than a list. So:
>
> >>> timeline_data = {
> ... 800: ["Charlemagne Crowned Holy Roman Emperor", 'event_text'],
> ... 1066: ["Battle at Hastings", 'event_text']}
>
>
> This makes it very easy to access a given year's data:
>
> >>> timeline_data[800]
> ['Charlemagne Crowned Holy Roman Emperor', 'event_text']
>
> and
>
> >>> timeline_data[800][0]
> 'Charlemagne Crowned Holy Roman Emperor'
>
> will get you the headline alone.
>
> You expressed a liking for the lists as they are easy to sort. On
> recent versions of python one can easily obtain a sorted list of
> dictionary keys, too:
>
> >>> d = {1:2, 3:4, 43545:32, -3434:42}
> >>> d
> {1: 2, 3: 4, -3434: 42, 43545: 32}
> >>> sorted(d)
> [-3434, 1, 3, 43545]
> >>>
>
> (Older versions of Python can do the same, but with a bit more
> keyboard action.)
>
> So, if you wanted to print the headlines in increasing year order:
>
> >>> for year in sorted(timeline_data):
> ... print timeline_data[year][0]
> ...
> Charlemagne Crowned Holy Roman Emperor
> Battle at Hastings
> >>>
>
>
> You say you are new to Python. Well, it might not now be obvious why
> dictionaries are especially useful, but they are *central* to the
> pythonic approach. The sooner you become comfortable with them, the
> better (IMHO).
I agree that dicts are extremely useful, but I don't think they add
anything in this case unless there is actually a need for keyed access.
A list of lists (or tuples) seems very appropriate to me. A good
alternative might be a list of Bunches.
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52308
Kent
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor