I’m pretty new to python (couple weeks into it) and I’m having some trouble wrapping my head around data structures. What I’ve done so far is extract text line-by-line from a .txt file and store them into a dictionary with the key as animal, for example.
database = {
'dog': ['apple', 'dog', '2012-06-12-08-12-59'],
'cat': [
['orange', 'cat', '2012-06-11-18-33-12'],
['blue', 'cat', '2012-06-13-03-23-48']
],
'frog': ['kiwi', 'frog', '2012-06-12-17-12-44'],
'cow': [
['pear', 'ant', '2012-06-12-14-02-30'],
['plum', 'cow', '2012-06-12-23-27-14']
]
}
# year-month-day-hour-min-sec
That way, when I print my dictionary out, it prints out by animal types, and the newest dates first.
Whats the best way to go about sorting this data by time? I’m on python 2.7. What I’m thinking is
for each key:
grab the list (or list of lists) –> get the 3rd entry –> '-'.split it, –> then maybe try the sorted(parameters)
I’m just not really sure how to go about this…
Walk through the elements of your dictionary. For each value, run
sortedon your list of lists, and tell the sorting algorithm to use the third field of the list as the “key” element. This key element is what is used to compare values to other elements in the list in order to ascertain sort order. To tellsortedwhich element of your lists to sort with, useoperator.itemgetterto specify the third element.Since your timestamps are rigidly structured and each character in the timestamp is more temporally significant than the next one, you can sort them naturally, like strings – you don’t need to convert them to times.