Форум сайта python.su
0
Доброго времени суток
Вопрос возможно простой, но опыта в Python/Django у меня мало, и почему-то сходу решение не нашлось, буду благодарен за совет.
Есть такой list из dict-ов
[ {'product_id': '1', 'quantity': '1'}, {'product_id': '1', 'quantity': '1'}, {'product_id': '2', 'quantity': '1'}, {'product_id': '1', 'quantity': '1'} ]
[ {'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)
Офлайн
103
>>> a = [ ... {'product_id': '1', 'quantity': '1'}, ... {'product_id': '1', 'quantity': '1'}, ... {'product_id': '2', 'quantity': '1'}, ... {'product_id': '1', 'quantity': '1'} ... ] >>> b = {} >>> for i in a: ... b[i['product_id']] = int(i['quantity']) + b.get(i['product_id'], 0) ... >>> print b {'1': 3, '2': 1} >>> print [{'product_id': i, 'quantity': str(j)} for i, j in b.items()] [{'product_id': '1', 'quantity': '3'}, {'product_id': '2', 'quantity': '1'}]
Отредактировано terabayt (Июнь 14, 2015 17:24:32)
Офлайн
568
from collections import defaultdict lst = [ {'product_id': '1', 'quantity': '1'}, {'product_id': '1', 'quantity': '1'}, {'product_id': '2', 'quantity': '1'}, {'product_id': '1', 'quantity': '1'} ] res = defaultdict(int) for dct in lst: res[dct["product_id"]] += int(dct["quantity"]) res = [{'product_id': k, 'quantity': str(v)} for k, v in res.iteritems()] print res
Офлайн
0
Спасибо.
Офлайн