Python 基于列合并两个列表
我试图基于一个类似于执行内部联接的字段合并两个列表 列表A:姓名、职位、员工ID 样本条目 1鲍勃,管理员,32443 杰克,保安,5464 清单B:职位、任务 样本条目 1管理员,检查系统文件 2管理员,添加用户 3管理员,删除用户 4.安全,执行审查 5安全,检查设置 我需要最终输出如下: 鲍勃,管理员,32443,检查系统文件 Bob,管理员,32443,添加用户 鲍勃,管理员,32443,删除用户 杰克,保安,5464,执行审查 杰克,保安,5464,检查设置 请指导我如何在简单循环中包含此类代码。我是Python新手Python 基于列合并两个列表,python,Python,我试图基于一个类似于执行内部联接的字段合并两个列表 列表A:姓名、职位、员工ID 样本条目 1鲍勃,管理员,32443 杰克,保安,5464 清单B:职位、任务 样本条目 1管理员,检查系统文件 2管理员,添加用户 3管理员,删除用户 4.安全,执行审查 5安全,检查设置 我需要最终输出如下: 鲍勃,管理员,32443,检查系统文件 Bob,管理员,32443,添加用户 鲍勃,管理员,32443,删除用户 杰克,保安,5464,执行审查 杰克,保安,5464,检查设置 请指导我如何在简单循环中包
提前感谢您使用笛卡尔积,然后跳过未满足连接条件的项目:
((name, position, emp_id, tasks)
for name, position, emp_id in ListA
for position2, tasks in ListB
if position == position2)
如果我们使用itertools,我们可以稍微缩短它,以避免嵌套for循环:
以上两个代码段都是生成器表达式。如果您想要一个真实的列表,请将最外面的一对括号改为方括号。这些列表的准确程度如何?你是说字典吗?你试过用吗?彼得,它们不是字典。它们取自csv文件。在那之后做了一些操作。合并这些列表后,我需要将结果与另一个列表合并,然后最终复制到csv文件。@b4hand,不,我没有尝试熊猫。对于新手问题,我很抱歉。还在学习阶段!如何使用上述代码获取列表。ListC=name,position,emp_id,tasks for name,position,emp_id,position2,itertools.productListA中的tasks,如果position==position2,则ListB会给我一个语法错误。@GayathriGopalakrishnan:语法已修复。您需要使用方括号或将其传递给list来创建列表。
((name, position, emp_id, tasks)
for (name, position, emp_id), (position2, tasks)
in itertools.product(ListA, ListB)
if position == position2)