An example problem. The actual problem uses datetimes but this simplifies it for this example
unordered_list = [Class(letter='A', value=5),
Class(letter='B', value=3),
Class(letter='C', value=2),
Class(letter='D', value=8),
Class(letter='E', value=5),
Class(letter='F', value=8)]
sorted_list = fun(unordered_list)
expected_result = [Class(letter='C', value=2),
Class(letter='B', value=3),
(Class(letter='A', value=5), Class(letter='E', value=5)),
(Class(letter='D', value=8), Class(letter='F', value=8))]
# or
expected_result = [(Class(letter='C', value=2)),
(Class(letter='B', value=3)),
(Class(letter='A', value=5), Class(letter='E', value=5)),
(Class(letter='D', value=8), Class(letter='F', value=8))]
I don't really mind what format they're in; list, set, tuple I'm not picky.
I've had a go at answering the question myself below. However I think there is a faster or more pythonic method.
Bit of extra code if you want to run the example problem
class Class:
def __init__(self, letter, value):
self.letter = letter
self.value = value
def __str__(self):
return self.letter+'->'+str(self.value)
The python sort method (sorted(unordered_list, key=lambda x: x.value)
) does not solve this problem by itself because items of the same value aren't grouped