0

I have a list of dicts like below:

[
 {'init_time': datetime.time(14, 0), 'end_time': datetime.time(19, 0), 'value': 5.2}, 
 {'init_time': datetime.time(17, 0), 'end_time': datetime.time(18, 0), 'value': 6.5},
 {'init_time': datetime.time(15, 0), 'end_time': datetime.time(17, 0), 'value': 2.5}
]

How can I sort this list by the value of each dict's init_time? Usually with sorted one is able to sort a dict based on either key or value, but in my case, I'm not interested in sorting the dict but the list, using the dict's values.

For example, the output of the above would be:

[
 {'init_time': datetime.time(14, 0), 'end_time': datetime.time(19, 0), 'value': 5.2}, 
 {'init_time': datetime.time(15, 0), 'end_time': datetime.time(17, 0), 'value': 2.5}
 {'init_time': datetime.time(17, 0), 'end_time': datetime.time(18, 0), 'value': 6.5},
]
  • You can sort a list of dicts by a specific key value, take a look at [Sorting HOW TO](https://docs.python.org/3/howto/sorting.html) – benvc Jan 15 '19 at 16:32

1 Answers1

3

Python's sorted function has a key parameter that will be used in comparisons,

new_list = sorted(old_list, key=lambda item: item["init_time"])
Yotam Salmon
  • 2,400
  • 22
  • 36
  • oh, I always understood that `key` parameter as an element of the main object I'm sorting, in this case the list. Didn't know I could use it this way with `lambda` –  Jan 15 '19 at 16:35