在列表中合并/联接/组合具有相同关键字的词典



我有字典的列表

rows = [{'sku':123,'barcode':99123,'day_1_qty':9,'store':118},
{'sku':123,'barcode':99123,'day_1_qty':7,'store':109},
{'sku':124,'barcode':99124,'day_1_qty':9,'store':118},
{'sku':123,'barcode':99123,'day_2_qty':10,'store':118}....]

我想合并它们,这是我想要的输出:

rows = [{'sku':123,'barcode':99123,'day_1_qty':9,'store':118,'day_2_qty':10},
{'sku':123,'barcode':99123,'day_1_qty':7,'store':109},
{'sku':124,'barcode':99124,'day_1_qty':9,'store':118},....]

尝试通过sku合并它们,但其他商店不会显示,请帮助

def generate_oos(dict_list):
res = map(lambda dict_tuple: dict(ChainMap(*dict_tuple[1])),
groupby(sorted(dict_list,key=lambda sub_dict: sub_dict["SKU"]),
key=lambda sub_dict: sub_dict["SKU"]))
return list(res)

尝试:

rows = [
{"sku": 123, "barcode": 99123, "day_1_qty": 9, "store": 118},
{"sku": 123, "barcode": 99123, "day_1_qty": 7, "store": 109},
{"sku": 124, "barcode": 99124, "day_1_qty": 9, "store": 118},
{"sku": 123, "barcode": 99123, "day_2_qty": 10, "store": 118},
]
tmp = {}
for d in rows:
tmp.setdefault((d["sku"], d["store"]), []).append(d)
out = []
for k, v in tmp.items():
out.append({})
for vv in v:
out[-1].update(vv)
print(out)

打印:

[
{
"sku": 123,
"barcode": 99123,
"day_1_qty": 9,
"store": 118,
"day_2_qty": 10,
},
{"sku": 123, "barcode": 99123, "day_1_qty": 7, "store": 109},
{"sku": 124, "barcode": 99124, "day_1_qty": 9, "store": 118},
]

最新更新