将列表与列表中不同长度的列表合并

编程入门 行业动态 更新时间:2024-10-06 16:27:02
本文介绍了将列表与列表中不同长度的列表合并的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试结合历史数据,这些数据来自一个古老的定制电子邮件系统,用Python创建一个数据库。一个列表(b)包含电子邮件ID,另一个列表(a)包含附件的文件名。一封电子邮件可以没有、可以有一个或多个附件。有数千条记录要处理。

我提取了以下格式的数据:

a = [[], ['a'], ['b', 'c', 'd']] b = ['c1', 'c2', 'c3']

我希望删除‘a’中的空数据,其余数据采用以下格式,但不关心它是列表还是元组。

x = [[['c2', 'a'], [['c3', 'b'], ['c3', 'c'], ['c4', 'd']]]

我已尝试使用Zip

x = zip(b, a)

但添加到每个

开头 (('c1', []), ('c2', ['a']), ('c3', ['b', 'c', 'd']))

我尝试了IterTools Chain:

op = [list(itertools.chain(*i)) for i in zip(b, a)]

但结果是:

[['c', '1'], ['c', '2', 'a'], ['c', '3', 'b', 'c', 'd']]

我还尝试使用re.findall()将数据转换为更可用的格式,但通常会出现电子邮件ID与文件名不匹配的情况。有很多关于列表和连接等的内容,但我还没有找到任何关于长度可变的列表中的列表的有用内容。

推荐答案

我希望我没有理解错您的问题(您的输出中有c4,但我认为应该是c3):

a = [[], ["a"], ["b", "c", "d"]] b = ["c1", "c2", "c3"] out = [[[v, s] for s in l] for v, l in [t for t in zip(b, a) if t[1]]] print(out)

打印:

[[["c2", "a"]], [["c3", "b"], ["c3", "c"], ["c3", "d"]]]

更多推荐

将列表与列表中不同长度的列表合并

本文发布于:2023-11-29 15:37:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1646817.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:列表   长度   列表中

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!