一个列表匹配的小函数

业务场景是客户做了一批产品订单出库后续要根据产品编码进行补单,需要将出库单与订单进行匹配。

很自然的想法是写一个sql,根据产品编码left join即可,我写了之后,两张表数据太大了,查询时间需要8秒多,单独每个小sql查询起来,不到两秒,所以想单独查好,把列表数据进行匹配进行。

# key就是两个列表中字典值匹配的关键值,多加了一个left_int为匹配不成功,右边列表的值也要填入为空,
# 但部分值为0比较恰当,属于比较简单的代码了
def merger_two_data(ansList1, ansList2, key, left_int):
    strKey1, strKey2 = key[0], key[1]
    ansList = []
    void_key = ansList2[0].keys()
    void_dict = dict.fromkeys(list(void_key), '')
    for i in left_int:
        void_dict[i] = 0
    for i in ansList1:
        key_value1 = i[strKey1]
        n = 0
        for j in ansList2:
            key_value2 = j[strKey2]
            if key_value1 == key_value2:
                n += 1
                k = dict(i, **j)
                ansList.append(k)
        if n == 0:
            k = dict(i, **void_dict)
            ansList.append(k)
    return ansList

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值