Вопрос возможно простой, но опыта в Python/Django у меня мало, и почему-то сходу решение не нашлось, буду благодарен за совет.
Есть такой list из dict-ов
[ {'product_id': '1', 'quantity': '1'}, {'product_id': '1', 'quantity': '1'}, {'product_id': '2', 'quantity': '1'}, {'product_id': '1', 'quantity': '1'} ]
Нужно сгруппировать их по значению ‘quantity’, сложив его, т.е. на выходе получить
[ {'product_id': '1', 'quantity': '3'}, {'product_id': '2', 'quantity': '1'} ]
Пытался сделать таким образом:
products_grouped = [] for p in products: if p in products_grouped: products_grouped[products_grouped.index(p)] = { 'product': Product.objects.get(id=p['product'].id), 'quantity': str(int(products_grouped[products_grouped.index(p)]['quantity']) + int(p['quantity'])) } else: products_grouped.append(p)
Но почему-то конструкция in воспринимает dict, как входящий в list только вхождения первого элемента идущие подряд, а после прохода по другому элементу, следующий (такой же как первые два) - воспринимает как уже новый (p in products_grouped == False)
Возможно я просто неверно понимаю этот механизм, был бы благодарен за совет, как это лучше сделать.
Заранее спасибо.