Объединить два списка разной длины в Python - PullRequest
1 голос
/ 30 мая 2019

У меня есть 2 списка разной длины. Подарок выбирается и присваивается имени, затем следующий подарок присваивается следующему имени и т. Д. В круге до тех пор, пока подарки не будут закончены.

gifts = ['pencil', 'pen', 'book', 'notebook', 'pencil_box', 'schoolbag', 'stick']
name = ['John', 'Marcus', 'Marie']

Ожидаемый результат:

John: pencil notebook stick
Marcus: pen pencil_box 
Marie: book schoolbag

Другой пример:

gifts  = ['car', 'house', 'phone']
name = ['RichieRich']

Ожидаемый результат:

RichieRich: car house phone

Некоторая помощь?

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Вот, пожалуйста:

from itertools import cycle
from collections import defaultdict

gifts = ['pencil', 'pen', 'book', 'notebook', 'pencil_box', 'schoolbag', 'stick']
names = ['John', 'Marcus', 'Marie']

gifts_by_name = defaultdict(list)
for name, gift in zip(cycle(names), gifts):
    gifts_by_name[name].append(gift)

for name in names:
    print '%s: %s' % (name, " ".join(gifts_by_name[name]))
0 голосов
/ 30 мая 2019

Это можно использовать для циклов:

count = 0 
kids = [yourkids]
gifts = [yourgifts]
outputKids = kids
for gift in gifts:
    if count > kids.length:
        count = 0;
    outputKids[count].push(gift)
    count = count + 1

Затем просто сопоставьте ваш массив "kids" с вашими "outputKids" (по индексу), и у вас есть подарки для каждого ребенка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...