Если кто-нибудь, у кого есть идея о том, как улучшить название, более чем приветствуется!Из списка словарей отфильтровать, для каждого элемента, это самое низкое значение
У меня есть список словарей:
list = [
{ 'id' : 1, 'value' : 1 },
{ 'id' : 2, 'value' : 2 },
{ 'id' : 1, 'value' : 2 },
{ 'id : 2, 'value' : 1 },
]
Я отсортирован его key=itemgetter('id','value')
и получить
list = [
{ 'id' : 1, 'value' : 1 },
{ 'id' : 1, 'value' : 2 },
{ 'id' : 2, 'value' : 1 },
{ 'id : 2, 'value' : 2 },
]
Теперь я хочу, чтобы отфильтровать, для каждого идентификатора, это самое низкое значение, чтобы получить
list = [
{ 'id' : 1, 'value' : 1 },
{ 'id' : 2, 'value' : 1 },
]
Мое текущее решение что-то вроде этого
new_list = []
old_id = -1
for item in list:
new_id = item['id']
if new_id != old_id:
new_list.append(item)
old_id = new_id
Но я видел много интересных вещей, сделанных здесь с фильтрами, картой, сокращением, функциями лямбда и пониманием списка, и начал допрос, если может быть более чистое решение моей проблемы?
Посмотрите в ' itertools.groupby'. Но если код, который у вас есть, переходите к следующей полезной части. – jonrsharpe
Я думаю, вы хотели написать 'new_list.append (item)' –
Спасибо, Джим, отредактировал его в :) – MrJalapeno