unique_weeks = sorted(self.unique([(e.isocalendar()[0], e.isocalendar()[1]) for e in dates]), reverse=True) print unique_weeks for x in range(min(num_weeks, len(unique_weeks))): possible_dates = [e for e in dates if (e.isocalendar()[0], e.isocalendar()[1]) == unique_weeks[x]] print possible_dates possible_dates.sort(cmp = lambda a, b: cmp(a.isocalendar(), b.isocalendar), reverse=True) weeks.append(possible_dates[0]) self.print_note("weeks: %s", weeks)