如何使用python检测列表中的不同元素并从中创建新列表(查找)

要逐个元素发送电子邮件,我需要首先检测列表中的不同元素,然后从它们创建新列表。


有没有人可以帮助我解决下面的问题?


我提到的清单也与另一个相关联。


我有:


list_I = [123, 453, 444, 555, 567, ...]


list_II = [A , A, B, C, B, ....]

我希望得到的是:


New_list_I = [123, 453]


New_list_I_a = [A, A]

New_list_II = [444,567]


New_list_II_a = [B, B]

New_list_III = [555]


New_list_III_a = [C]


动漫人物
浏览 188回答 2
2回答

回首忆惘然

一种方法是从两个列表创建一个字典:from collections import defaultdictd = defaultdict(list)for k,v in zip(list_2, list_1):    d[k].append(v)# defaultdict(list, {'A': [123, 453], 'B': [444, 567], 'C': [555]})然后使用列表推导从字典中获取指定的输出。[[[k for _ in range(len(v))], v] for k,v in d.items()]# [[['A', 'A'], [123, 453]], [['B', 'B'], [444, 567]], [['C'], [555]]]请注意,嵌套列表结构比动态创建的一系列列表更容易处理和使用。请注意,从此结果中,您可以使用基本切片和索引选择每个结果子列表

哈士奇WWW

为什么不直接从这两个列表中创建一个带有键、值的字典,然后根据值进行排序:list_I = [123, 453, 444, 555, 567]list_II = ['A' , 'A', 'B', 'C', 'B']res = dict(zip(list_I, list_II))print(sorted(res.items(), key=lambda x:x[1]))输出:[(123, 'A'), (453, 'A'), (444, 'B'), (567, 'B'), (555, 'C')]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python