Python中两List的Sql左连接实现

85 篇文章 1 订阅
60 篇文章 2 订阅
内联接比较容易,之前做过,用两List的关键字进行if过滤即可;左(右)连接稍微麻烦一些,但稍思考一下,还是可以满足条件的。
/Users/nisj/PycharmProjects/BiDataProc/Demand/hadoopStat/SqlLeftJoin.py
# -*- coding=utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')

listA = [[1, '加内特'], [2, '基德'], [3, '邓肯'], [4, '奥尼尔'], [5, '麦蒂']]
listB = [[1, '科比'], [2, '韦德'], [3, '诺威司机']]
for aa in listA:
    bbIndex=[]
    for bb in listB:
        bbIndex.append(bb[0])
        if aa[0] == bb[0]:
            print aa[0], bb[0], aa[1], bb[1]
    if aa[0] not in bbIndex:
        print aa[0], None, aa[1], 'NULL'
查询结果:
/usr/bin/python /Users/nisj/PycharmProjects/BiDataProc/Demand/hadoopStat/SqlLeftJoin.py
1 1 加内特 科比
2 2 基德 韦德
3 3 邓肯 诺威司机
4 None 奥尼尔 NULL
5 None 麦蒂 NULL

Process finished with exit code 0

Python的列表(list)与SQL的外连接(outer join)没有直接的对应关系。列表是一种有序的集合数据类型,而外连接是一种关系型数据库操作,用于将个表的数据进行联合查询。如果你想在Python实现类似于左外连接的操作,你可以使用字典(dict)或者pandas库的merge函数。以下是一个使用字典实现左外连接的示例: ```python # 个字典,分别表示个表 customers = {'id': [1, 2, 3, 4], 'name': ['Alice', 'Bob', 'Charlie', 'David']} orders = {'order_id': [101, 102, 103], 'customer_id': [1, 3, 5], 'amount': [100, 200, 300]} # 左外连接操作 result = [] for customer_id, customer_name in zip(customers['id'], customers['name']): orders_amount = [] for order_id, order_customer_id, order_amount in zip(orders['order_id'], orders['customer_id'], orders['amount']): if customer_id == order_customer_id: orders_amount.append(order_amount) result.append((customer_id, customer_name, sum(orders_amount))) # 输出结果 print(result) ``` 输出结果为: ``` [(1, 'Alice', 100), (2, 'Bob', 0), (3, 'Charlie', 200), (4, 'David', 0)] ``` 这个例子,我们使用了个字典来模拟个表,然后通过循环遍历的方式实现了左外连接操作。在连接过程,我们使用了zip()函数来同时遍历个字典的键值对,然后通过判断条件来筛选符合要求的数据。最终的结果以元组(tuple)的形式保存在一个列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值