Python itertools';几个数组的permutations()用法

Python itertools';几个数组的permutations()用法,python,Python,我正在用Python构建字典列表,目的是逐个迭代每个字典列表,并连接所有不同的组合。字典列表中的每个“产品”有三个不同的组成部分: 1) 字母,例如,'a'(产品代码的第一部分,每个产品条目都是唯一的)。假设这里的范围是: ['A', 'B', 'C'] ['.X', '.Y', '.Z'] 2) 字母和数字,例如'S2'(第二部分有几种变体…可能是'D3'或'E5') 3) 一个句号('.)和一个字母,例如'.X'(第三部分,每个产品条目唯一)。假设这里的范围是: ['A', 'B', '

我正在用Python构建字典列表,目的是逐个迭代每个字典列表,并连接所有不同的组合。字典列表中的每个“产品”有三个不同的组成部分:

1) 字母,例如,
'a'
(产品代码的第一部分,每个产品条目都是唯一的)。假设这里的范围是:

['A', 'B', 'C']
['.X', '.Y', '.Z']
2) 字母和数字,例如
'S2'
(第二部分有几种变体…可能是
'D3'
'E5'

3) 一个句号(
'.
)和一个字母,例如
'.X'
(第三部分,每个产品条目唯一)。假设这里的范围是:

['A', 'B', 'C']
['.X', '.Y', '.Z']
由于上面列出的第二部分变化最多,我的初始假设是将第一部分和第三部分一起构建dicts列表,以减少不同列表的数量,因为它们是唯一成对的,例如,
A.Z'
…但是,我仍然需要拆分每个条目,然后在它们之间插入第二部分,通过一些“连接”命令。所以,问题是:如果我有另一个包含第二部分所有变体的dict列表,我应该使用什么函数来构建产品的所有变体

示例的总组合:

ListOne = ['A', 'B', 'C']
ListTwo = ['D3', 'D4', 'D5', 'E3', 'E4', 'E5']
ListThr = ['.X', '.Y', '.Z']
我需要创建新的dicts列表,作为所有三个dicts列表的串联,例如
'AD3.X'
,但是
ListOne
ListThr
没有变体,它将始终与
'A'
匹配
'.X'
'B'
'C'
匹配
'.Y'
列表在
ListOne
ListThr
产品之间串联的两个产品将需要迭代,以便所有可能的组合都作为新的dict列表输出,例如

ListOneNew = ['AD3.X', 'AD4.X', AD5.X', 'AE3.X', 'AE4.X', 'AE5.X']
ListTwoNew = ['BD3.Y', 'BD4.Y', 'BD5.Y', <and so on...>]

然后使用
列表拆分并连接两个
产品,或者只使用三个
列表
并从那里连接?

使用列表理解

from itertools import product

result = [a[0] + a[1] + a[2] for a in list(product(DictOne, DictTwo, DictThr))]
final = sorted([a+b+c for c in DictThr for b in DictTwo for a in DictOne])

具有列表理解能力

final = sorted([a+b+c for c in DictThr for b in DictTwo for a in DictOne])

那些不是字典,那些是列表…全部三个?我认为,如果一个产品名称中同时包含字母和数字,它将成为一本词典,而列表将是仅由字母组成的产品。不。字典和列表是完全不同的数据结构。那些不是字典,那些是列表…所有这三个?我认为,如果一个产品名称中同时包含字母和数字,它将成为一本词典,而列表将是仅由字母组成的产品。不。字典和列表是完全不同的数据结构。