[英]How to merge a list and a multi dimensional list while keeping a certain order
I have 1 list of names: 我有1个名字列表:
[VendorName1, VendorName2, VendorName3, VendorName4]
and I have a multidimensional list of emails varying in sizes: 我有一个大小不一的电子邮件的多维列表:
[[email1@mail.com],[email2@mail.com,email3@mail.com],[email4@mail.com],[email5@mail.com,email6@mail.com,email7@mail.com]
This is what I have tried so far but I keep getting errors. 到目前为止,这是我尝试过的方法,但我不断出错。
final=[]
count=1
for sub1 in vendor_names:
for sub2 in vendor_emails:
vendor_names[count].append(final)
vendor_emails[count].append(final[1])
print(final)
I would like to combine the 2 lists so that the final list is like: 我想合并两个列表,以便最终列表像:
[[[Vendor1,[email1@mail.com],[Vendor2,[email2@mail.com,email3@mail.com]]...]
You can use zip(), but it merges lists to list of tuples . 您可以使用zip(),但它将列表合并到元组列表。
OR 要么
For merging lists to list of lists : 要将列表合并到列表列表 :
x = ['VendorName1', 'VendorName2', 'VendorName3', 'VendorName4']
y = [['email1@mail.com'], ['email2@mail.com', 'email3@mail.com'], [
'email4@mail.com'], ['email5@mail.com', 'email6@mail.com', 'email7@mail.com']]
z = []
for i in range(len(x)):
z.append([])
z[i].append(x[i])
z[i].append(y[i])
print(z)
Output: 输出:
[['VendorName1', ['email1@mail.com']], ['VendorName2', ['email2@mail.com', 'email3@mail.com']], ['VendorName3', ['email4@mail.com']], ['VendorName4', ['email5@mail.com', 'email6@mail.com', 'email7@mail.com']]]
Zip will do this just fine: Zip可以做到这一点:
l1 = ['VendorName1', 'VendorName2', 'VendorName3', 'VendorName4']
l2 = [['email1@mail.com'],['email2@mail.com','email3@mail.com'],['email4@mail.com'],['email5@mail.com,email6@mail.com','email7@mail.com']]
print(list(zip(l1, l2)))
Output: 输出:
[('VendorName1', ['email1@mail.com']), ('VendorName2', ['email2@mail.com', 'email3@mail.com']), ('VendorName3', ['email4@mail.com']), ('VendorName4', ['email5@mail.com,email6@mail.com', 'email7@mail.com'])]
If you really don't want tuples
(since they are immutable) you can do list comprehension but this requires that you don't have more vendors than emails: 如果您真的不想要
tuples
(因为它们是不可变的),则可以进行列表理解,但这需要您的供应商不超过电子邮件:
l1 = ['VendorName1', 'VendorName2', 'VendorName3', 'VendorName4']
l2 = [['email1@mail.com'],['email2@mail.com','email3@mail.com'],['email4@mail.com'],['email5@mail.com,email6@mail.com','email7@mail.com']]
l3 = [[l1[x]] + [l2[x]] for x in range(len(l1))]
print(l3)
Output: 输出:
[['VendorName1', ['email1@mail.com']], ['VendorName2', ['email2@mail.com', 'email3@mail.com']], ['VendorName3', ['email4@mail.com']], ['VendorName4', ['email5@mail.com,email6@mail.com', 'email7@mail.com']]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.