为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

动漫人物 2021-12-17 16:34:25
要逐个元素发送电子邮件,我需要首先检测列表中的不同元素,然后从它们创建新列表。有没有人可以帮助我解决下面的问题?我提到的清单也与另一个相关联。我有: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]
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

一种方法是从两个列表创建一个字典:


from collections import defaultdict

d = 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]]]

请注意,嵌套列表结构比动态创建的一系列列表更容易处理和使用。请注意,从此结果中,您可以使用基本切片和索引选择每个结果子列表


查看完整回答
反对 回复 2021-12-17
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

为什么不直接从这两个列表中创建一个带有键、值的字典,然后根据值进行排序:


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')]


查看完整回答
反对 回复 2021-12-17
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信