Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def get_ranks(input_array):
- data = sorted(input_array)
- if len(data) == 0:
- return []
- data_with_count = []
- for elem in data:
- if len(data_with_count) == 0:
- data_with_count.append([elem, 1])
- else:
- if elem == data_with_count[-1][0]:
- data_with_count[-1][1] += 1
- else:
- data_with_count.append([elem, 1])
- start_rank = 1
- rank_data = {}
- for elem, count in data_with_count:
- finish_rank = start_rank + count - 1
- rank_data[elem] = (start_rank + finish_rank) / 2.0
- start_rank = finish_rank + 1
- return [rank_data[elem] for elem in input_array]
- # print (get_ranks([0, 0, 1, 1, 3, 3, 3]))
- # print (get_ranks([1, 2, 3, 4]))
- print (get_ranks([2,3,1,3,4,5]))
- print (get_ranks([1, 2, 3, 4, 5]))
- print (get_ranks([-1, -3, 1, 1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement