Форум сайта python.su
0
new = [{'sku': 'DS-AC-AANG9HA301', 'price': 145.16, 'qty': 4}, {'sku': 'DS-AC-AAN9L9HA332', 'price': 169.35, 'qty': 6}, {'sku': 'DS-AC-AAN9N9HA323', 'price': 174.34, 'qty': 0}, {'sku': 'DS-AC-AANG9HA304', 'price': 145.16, 'qty': 4}, {'sku': 'DS-AC-AAN9L9HA335', 'price': 169.35, 'qty': 6}] old = [{'sku': 'DS-AC-AANG9HA301', 'price': 145.16, 'qty': 0}, {'sku': 'DS-AC-AAN9L9HA332', 'price': 169.35, 'qty': 0}, {'sku': 'DS-AC-AAN9N9HA32', 'price': 174.34, 'qty': 0}, {'sku': 'DS-AC-AANG9HA303', 'price': 145.16, 'qty': 0}, {'sku': 'DS-AC-AAN9L9HA334', 'price': 169.35, 'qty': 0}]
Отредактировано ivant (Авг. 25, 2018 13:31:01)
Офлайн
13
new_items = [(a['sku'], new.index(a)) for a in new] old_items = [a['sku'] for a in old] for i in new_items: if not i[0] in old_items: old.append(new[i[1]]) continue
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Отредактировано DamMercul (Авг. 25, 2018 13:39:04)
Офлайн
0
Отлично! Большое спасибо!
PS. только нужно было наоборот сделать
но я поправил!
Хорошего дня! 
Офлайн
13
ivantНезачто
Отлично! Большое спасибо! PS. только нужно было наоборот сделать но я поправил! Хорошего дня!
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Отредактировано DamMercul (Авг. 25, 2018 14:32:04)
Офлайн
0
products = [ {'sku': 'DS-AC-AANG9HA301', 'model': '1 (E82/87, 2004-2011)', 'qty': 4}, {'sku': 'DS-AC-AAN9L9HA332', 'model': '2 (1C, F22, 2014-)', 'qty': 6}, {'sku': 'DS-AC-AAN9N9HA32', 'model': '3 (1C, F22, 2014-)', 'qty': 10}, {'sku': 'DS-AC-AANG9HA304', 'model': '4 (1C, F22, 2014-)', 'qty': 4}, {'sku': 'DS-AC-AANG9HA304', 'model': '1 (1K4, F20, 2011-)', 'qty': 4}, {'sku': 'DS-AC-AANG9HA304', 'model': '2 (2C, F22, 2014-)', 'qty': 4}, {'sku': 'DS-AC-AANG9HA304', 'model': '1 (4C, F22, 2014-)', 'qty': 4}, {'sku': 'DS-AC-AAN9L9HA334', 'model': '1 (E82/87, 2004-2011)', 'qty': 6}]
Офлайн
13
Я не до конца понял, чего тебе надо. Ты хочешь, чтобы если SKU повторялся а model - нет, то я к SKU добавил model и добавил это к old?
UPD: Я сейчас сонный, завтра помогу, а ты пока напиши по-понятнее, что ты хочешь) А сделать я помогу завтра или пусть кто-то еще поможет
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Отредактировано DamMercul (Авг. 25, 2018 23:17:16)
Офлайн
0
DamMercul
надо что бы в итоге было 2 списка, примерно такого вида:
products1 = [ {'sku': 'DS-AC-AANG9HA301', 'model': '1 (E82/87, 2004-2011)', 'qty': 4}, {'sku': 'DS-AC-AAN9L9HA332', 'model': '2 (1C, F22, 2014-)', 'qty': 6}, {'sku': 'DS-AC-AAN9N9HA32', 'model': '3 (1C, F22, 2014-)', 'qty': 10}, {'sku': 'DS-AC-AANG9HA304', 'model': '4 (1C, F22, 2014-)', 'qty': 4,'grouped_sku':'DS-AC-AANG9HA304-1k4, DS-AC-AANG9HA304-2c, DS-AC-AANG9HA304-4c'}, {'sku': 'DS-AC-AAN9L9HA334', 'model': '1 (E82/87, 2004-2011)', 'qty': 6}] products2 = [ {'sku': 'DS-AC-AANG9HA304-1k4', 'model': '1 (1K4, F20, 2011-)', 'qty': 4}, {'sku': 'DS-AC-AANG9HA304-2c', 'model': '2 (2C, F22, 2014-)', 'qty': 4}, {'sku': 'DS-AC-AANG9HA304-4c', 'model': '1 (4C, F22, 2014-)', 'qty': 4}]
Офлайн
13
from copy import deep_copy new_items_asdict = {new[a]['sku']: a for a in range(new.__len__())} old_items = [a for a in old][:] extra = [] for i in old_items: sku = i['sku'] if not sku in new_items_asdict: old.append(i) continue model_code = "".join(i['model'].split(" ")[1:]) _new_i = deep_copy(sku) _new_i['sku'] = sku + "-" + model_code extra.append(_new_i)
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Отредактировано DamMercul (Авг. 27, 2018 09:59:58)
Офлайн
0
DamMercul
В этом виде не работает 
Этот код не ту задачу выполняет. Надо что бы из этого
products = [ {'sku': 'DS-AC-AANG9HA301', 'model': '1 (E82/87, 2004-2011)', 'qty': 4}, {'sku': 'DS-AC-AAN9L9HA332', 'model': '2 (1C, F22, 2014-)', 'qty': 6}, {'sku': 'DS-AC-AAN9N9HA32', 'model': '3 (1C, F22, 2014-)', 'qty': 10}, {'sku': 'DS-AC-AANG9HA304', 'model': '4 (1C, F22, 2014-)', 'qty': 4}, {'sku': 'DS-AC-AANG9HA304', 'model': '1 (1K4, F20, 2011-)', 'qty': 4}, {'sku': 'DS-AC-AANG9HA304', 'model': '2 (2C, F22, 2014-)', 'qty': 4}, {'sku': 'DS-AC-AANG9HA304', 'model': '1 (4C, F22, 2014-)', 'qty': 4}, {'sku': 'DS-AC-AAN9L9HA334', 'model': '1 (E82/87, 2004-2011)', 'qty': 6}]
products1 = [ {'sku': 'DS-AC-AANG9HA301', 'model': '1 (E82/87, 2004-2011)', 'qty': 4}, {'sku': 'DS-AC-AAN9L9HA332', 'model': '2 (1C, F22, 2014-)', 'qty': 6}, {'sku': 'DS-AC-AAN9N9HA32', 'model': '3 (1C, F22, 2014-)', 'qty': 10}, {'sku': 'DS-AC-AANG9HA304', 'model': '4 (1C, F22, 2014-)', 'qty': 4,'grouped_sku':'DS-AC-AANG9HA304-1k4, DS-AC-AANG9HA304-2c, DS-AC-AANG9HA304-4c'}, {'sku': 'DS-AC-AAN9L9HA334', 'model': '1 (E82/87, 2004-2011)', 'qty': 6}] products2 = [ {'sku': 'DS-AC-AANG9HA304-1k4', 'model': '1 (1K4, F20, 2011-)', 'qty': 4}, {'sku': 'DS-AC-AANG9HA304-2c', 'model': '2 (2C, F22, 2014-)', 'qty': 4}, {'sku': 'DS-AC-AANG9HA304-4c', 'model': '1 (4C, F22, 2014-)', 'qty': 4}]

Отредактировано ivant (Авг. 27, 2018 22:00:39)
Офлайн
0
DamMerculхотя возможно я принцип не понял. Надо подумать
Принцип - если sku в old уже есть, он добавляется в extra, а там уже ели надо можешь extra переделать в ассоциативный массив, сам словарь сделай ключом а значением индкс в new
Отредактировано ivant (Авг. 27, 2018 22:08:17)
Офлайн