如何编写代码生成两次尝试中Offense列表的指定格式组合?
问题描述
给定以下字典:
dict_first_attempt = {'Offense': ['Jack','Jill','Tim'], 'Defense':['Robert','Kevin','Sam']} dict_second_attempt = {'Offense': ['Jack','McKayla','Heather'], 'Defense':['Chris','Tim','Julia']}
我们仅关注其中的Offense字段,可通过以下代码提取对应列表:
first = dict_first_attempt['Offense'] second = dict_second_attempt['Offense']
需要编写代码实现以下功能:
- 列出第一次尝试Offense与第二次尝试Offense的所有可能组合
- 以嵌套列表的形式输出结果
- 每个子列表的第一个元素来自第一次尝试的Offense列表,第二个元素来自第二次尝试的Offense列表
期望输出示例:
[['Jack','Jack'],['Jack','McKayla'],['Jack','Heather'], ['Jill','Jack'],['Jill','McKayla'],['Jill','Heather'], ['Tim','Jack'],['Tim','McKayla'],['Tim','Heather']]
解决方案
方法1:嵌套循环实现
通过两层循环遍历两个列表,逐个组合元素并添加到结果列表:
first = dict_first_attempt['Offense'] second = dict_second_attempt['Offense'] result = [] for f in first: for s in second: result.append([f, s]) print(result)
方法2:使用itertools.product简化代码
Python标准库的itertools.product可直接生成两个可迭代对象的笛卡尔积,再将每个元组转为列表即可:
import itertools first = dict_first_attempt['Offense'] second = dict_second_attempt['Offense'] result = [list(pair) for pair in itertools.product(first, second)] print(result)
两种方法都能输出符合要求的嵌套列表,第二种方法更简洁高效,适合处理元素较多的列表。
内容的提问来源于stack exchange,提问作者PKrange
相关产品推荐
相关产品推荐

