根据列合并两个列表

时间:2015-04-01 14:59:43

标签: python

我正在尝试根据字段组合两个列表(类似于执行内连接)

列表A:姓名,职位,员工ID

示例条目

  

1)Bob,Admin,32443
  2)Jack,Security,5464

列表B:职位,任务

示例条目

  

1)管理员,检查系统文件
  2)管理员,添加用户
  3)管理员,删除用户
  4)安全,执行审查
  5)安全性,检查设置

我需要最终输出如下:

  

Bob,Admin,32443,检查系统文件
  Bob,Admin,32443,添加用户
  Bob,Admin,32443,删除用户
  杰克,安全,5464,执行审查
  杰克,安全,5464,检查设置

请指导我如何在简单循环中包含此类代码。我是Python的新手 非常感谢你提前

1 个答案:

答案 0 :(得分:0)

选择笛卡尔积,然后跳过未通过连接条件的项目:

((name, position, emp_id, tasks)
for name, position, emp_id in ListA
for position2, tasks in ListB
if position == position2)

如果我们使用itertools,我们可以稍微缩短一下以避免嵌套for循环:

((name, position, emp_id, tasks)
for (name, position, emp_id), (position2, tasks)
in itertools.product(ListA, ListB)
if position == position2)

以上两个片段都是生成器表达式。如果需要真实列表,请将最外面的括号括号更改为方括号。