Проблема была бы проще с немного другим форматом данных.
Вы не написали никакого кода, поэтому я не дам вам полный ответ:
data = [{'name': 'a-v1', 'date': '2018-05-08T08:40:35.000Z'}, {'name': 'a-v2', 'date': '2018-05-20T08:40:35.000Z'}, {'name': 'a-v3', 'date': '2018-05-22T08:40:35.000Z'}, {'name': 'b-v1', 'date': '2018-02-08T08:40:35.000Z'}, {'name': 'b-v2', 'date': '2018-05-08T08:40:35.000Z'}, {'name': 'b-v3', 'date': '2018-05-10T08:40:35.000Z'}, {'name': 'c-v1', 'date': '2018-10-08T08:40:35.000Z'}, {'name': 'c-v2', 'date': '2018-11-08T08:40:35.000Z'}, {'name': 'd-v1', 'date': '2018-08-08T08:40:35.000Z'}]
temp = [d['name'].split('-') for d in data]
# [['a', 'v1'], ['a', 'v2'], ['a', 'v3'], ['b', 'v1'], ['b', 'v2'], ['b', 'v3'], ['c', 'v1'], ['c', 'v2'], ['d', 'v1']]
versions = [(letter, int(v[1:])) for letter, v in temp]
sorted(versions)
Это выводит:
[('a', 1),
('a', 2),
('a', 3),
('b', 1),
('b', 2),
('b', 3),
('c', 1),
('c', 2),
('d', 1)]
Теперь вы можете попробовать использовать itertools.groupby
, чтобы сгруппировать версии по буквам и удалить каждую версию, кроме двух последних, для каждой группы.