2024-09-29 01:38:36 发布
网友
我有一个字典,里面有项目和每个项目的重复次数,例如:
{A: 3, B: 1}
我正在寻找一种方法来获得所有可能的不同组合, 顺序无关紧要:[AB]与[BA]相同
[AB]
[BA]
想要的输出是:
[A, AA, AAA, B, AB, AAB, AAAB]
下面是一种使用列表理解和^{}的方法:
from itertools import product, chain d = {'A': 3, 'B': 1} l = [[k*i for i in range(1,v+1)] for k, v in d.items()] [''.join(element) for element in product(*l)] + list(chain.from_iterable(l))
输出:
['AB', 'AAB', 'AAAB', 'A', 'AA', 'AAA', 'B']
详细信息:
第一个列表理解的结果是一个嵌套列表,其中每个子列表都有字典中包含的每个keys从1到其对应的value重复:
keys
1
value
[['A', 'AA', 'AAA'], ['B']]
第二个,使用^{}执行笛卡尔积,每个积joined成为一个字符串。最后,使用chain.from_iterable添加l的扁平版本:
joined
chain.from_iterable
l
print(list(chain.from_iterable(l))) ['A', 'AA', 'AAA', 'B'] [''.join(element) for element in product(*l)] ['AB', 'AAB', 'AAAB']
下面是一种使用列表理解和^{} 的方法:
输出:
详细信息:
第一个列表理解的结果是一个嵌套列表,其中每个子列表都有字典中包含的每个
keys
从1
到其对应的value
重复:第二个,使用^{} 执行笛卡尔积,每个积
joined
成为一个字符串。最后,使用chain.from_iterable
添加l
的扁平版本:相关问题 更多 >
编程相关推荐