要按元素发送电子邮件元素,我需要首先检测列表中的不同元素,然后根据它们创建新列表。
有人可以帮助我解决以下问题吗?
我提到的列表也与另一个列表相互关联。
我有:
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]
答案 0 :(得分:1)
一种方法是从两个列表中创建字典:
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]]]
请注意,嵌套的列表结构比动态创建的一系列列表更易于处理和使用。请注意,您可以从此结果中使用Basic Slicing and Indexing
选择每个结果子列表。答案 1 :(得分:0)
为什么不只用键,值从这两个列表中创建字典,然后根据值排序:
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')]