如何将简单ID列表与可变长度双元素嵌套列表组合生成三元组列表
邮件ID与收件人信息关联实现
输入输出说明
现有两个输入数据源:
- 邮件ID列表
em_id:存储每封邮件的唯一标识 - 嵌套收件人列表
rec:每个子列表对应同下标邮件的所有收件人信息,单条收件人信息包含收件类型、收件人姓名两个字段
输入示例:
em_id = ['e1', 'e2'] rec = [[['To', 'Bob'], ['To', 'Billy'], ['Cc', 'Jane']], [['Bcc', 'Bob']]]
预期输出为扁平化的三元组列表,结构为[邮件ID, 收件类型, 收件人姓名],输出示例:
em_rec = [['e1', 'To', 'Bob'], ['e1', 'To', 'Billy'], ['e1', 'Cc', 'Jane'], ['e2', 'Bcc', 'Bob']]
实现方案
基础嵌套循环版(易读性高)
通过zip配对同下标邮件ID和对应收件人列表,内层循环遍历单封邮件的所有收件人生成三元组:
em_rec = [] for emid, rec_list in zip(em_id, rec): for rec_type, rec_name in rec_list: em_rec.append([emid, rec_type, rec_name])
列表推导式版(写法简洁)
将嵌套逻辑整合为列表推导式,一行即可完成生成:
em_rec = [[emid, rec_type, rec_name] for emid, rec_list in zip(em_id, rec) for rec_type, rec_name in rec_list]
两种实现都可以自动适配每封邮件不同的收件人长度,符合无空值场景的使用要求。
内容的提问来源于stack exchange,提问作者ananta
相关产品推荐
相关产品推荐

