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

标签 python python-2.7 list merge

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

有什么帮助吗?

最佳答案

给你:

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

关于python - 在python中合并两个不同长度的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56383201/

相关文章:

python - 在Python中捕获过去x天内修改过的文件

python - 将 python 列表拆分为其他 "sublists"即较小的列表

python - 一种处理字典 KeyError 的方法

java - 当 EObject 包含无序的 EList 时如何比较它们之间的相等性?

python - Python 什么时候为空列表创建新的列表对象?

list - 如何在 lisp 中编写递归?

Python 风格 : if statements vs. bool 计算

android - Kivy 的音频输入选项?

python - ctypes:传递和读取枚举指针

python - 如何使用Python流对象?