 <p>You can use <code>list = sorted(list, key=...)</code> or <code>list.sort(key=...)</code>. </p> <p>First method lets you use slicing to get/set only part of list - without changing first row.</p> <pre><code>import datetime table_of_list = [['name', 'email', 'address', 'details', 'date_last_contacted'], [u'Jane Doe', u'jdoe@abc.com', u'sillybilly', u'dodo', datetime.date(2016,11,1) ], [u'John Doe', u'jedoe@abc.com', u'123 house',u'random', datetime.date(2016,10,1) ] ] table_of_list[1:] = sorted(table_of_list[1:], key=lambda x: x[4]) print(table_of_list) </code></pre>