在python中合并两个不同长度的列表

2024-10-01 15:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同长度的列表。 一个礼物被选中并分配给一个名字,然后下一个礼物将被给下一个名字,以此类推,在圆圈中,直到礼物完成。你知道吗

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

有人帮忙吗?你知道吗


Tags: namebox名字john产量notebookpencil礼物
2条回答

给你:

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

这可以使用for循环:

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

然后只要把你的“孩子数组”映射到你的“输出孩子”(按索引),你就有了每个孩子的礼物。你知道吗

相关问题 更多 >

    热门问题