[Tutor] Lists in lists

Brian van den Broek broek at cc.umanitoba.ca
Sat Sep 16 20:30:57 CEST 2006


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).

Best wishes,

Brian vdB


More information about the Tutor mailing list