Как объединить список и многомерный список, сохраняя определенный порядок - PullRequest
0 голосов
/ 11 июня 2019

У меня есть 1 список имен:

[VendorName1, VendorName2, VendorName3, VendorName4]

и у меня есть многомерный список писем разного размера:

[[email1@mail.com],[email2@mail.com,email3@mail.com],[email4@mail.com],[email5@mail.com,email6@mail.com,email7@mail.com]

Это то, что я пробовал до сих пор, но я продолжаю получать ошибки.

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)

Я хотел бы объединить 2 списка так, чтобы окончательный список был похож на:

[[[Vendor1,[email1@mail.com],[Vendor2,[email2@mail.com,email3@mail.com]]...]

Ответы [ 2 ]

1 голос
/ 11 июня 2019

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

Выход:

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

Если вы действительно не хотите 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)

Выход:

[['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']]]
1 голос
/ 11 июня 2019

Вы можете использовать zip (), но он объединяет списки в список кортежей .

ИЛИ

Для объединения списков в список списков :

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)

Выход:

[['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']]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...