python - 在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
一些帮助?
解决方案
干得好:
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 - Pandas 棘手的列总和
- angular - 如何让 ForEach 循环和 SetTimeout 与 Angular 6 一起使用
- android - 有什么方法可以限制使用新的 d8 编译器的 dex 方法计数?
- web - 如何保护 IP 敏感的计算代码,使我的网站程序员无法解码/读取它,但可以使用它?
- openssl - 如何将 .p12 转换为 .crt 文件?
- android - Google Drive SDK - 实时上传/流式传输视频
- javascript - javascript 等效于 jquery 所有子选择器
- python - 如果元组是可变的,则 python 元组分配
- javascript - JS 测试中间件返回 next()
- c++ - struct S { int align; 之间的区别 }; (结构关键字后的名称)和 struct { int align; } S; (结构定义后的名称)