【问题标题】:Merge/Join/Combine dictionaries with same key inside a list在列表中合并/加入/组合具有相同键的字典
【发布时间】:2021-08-22 05:22:15
【问题描述】:

我有字典列表

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)

【问题讨论】:

    标签: python list dictionary list-comprehension


    【解决方案1】:

    试试:

    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},
    ]
    

    【讨论】:

      猜你喜欢
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-25
      • 2021-11-26
      • 2018-01-20
      • 1970-01-01
      相关资源
      最近更新 更多