首页 > 解决方案 > 在python中组合两个不同长度的列表

问题描述

我有 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

一些帮助?

标签: pythonpython-2.7listmerge

解决方案


干得好:

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

推荐阅读