当前位置: 首页 > 知识库问答 >
问题:

Python-找到可能的组合从项目和数量的代表[重复]

鲁华茂
2023-03-14

我有一本字典,上面有项目和每个项目的代表人数,例如:

{A: 3, B: 1}

我正在寻找一种方法来获得所有可能的不同组合,顺序并不重要:[AB][BA]相同。

想要的输出是:

[A, AA, AAA, B, AB, AAB, AAAB]

共有1个答案

许焕
2023-03-14

下面是一种使用列表理解和itertools.product的方法:

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

详情:

第一个列表理解的结果是一个嵌套列表,其中每个子列表都有字典中包含的每个,从1重复到其相应的

[['A', 'AA', 'AAA'], ['B']]

第二个,使用itertools执行笛卡尔乘积。产品,并且每个产品都被连接成一个字符串。最后,使用链添加l的扁平版本。从_iterable

print(list(chain.from_iterable(l)))
['A', 'AA', 'AAA', 'B']

[''.join(element) for element in product(*l)]
['AB', 'AAB', 'AAAB']
 类似资料:
  • 这个问题与这个问题非常相似,但我不想把每个原始组中的一个项目放在每个输出组中,而是希望每个原始组中的多个项目放在每个输出组中。 我有以下数据。 包含6个项目,包含6个项目,包含7个项目。基于这些初始组,我想将项目放入3个新组,确保每个新组包含相同数量(2或)的项目。此外,这3个新组中的每一个都不能重复这些项目——每个项目只能为每个新组使用一次。例如,一个可能的输出可能是下面的这个输出。 实际上,我

  • 问题内容: 这个问题已经在这里有了答案 : 执行功能后,Python脚本返回意外的“无” [重复] (3个答案) 7年前关闭。 输出量 我不想要“无”,那么 如何执行一行代码以返回输入列表中的项目? 我试过了: 但这不起作用,因为return语句不能那样工作 问题答案: 您正在打印的返回码是。只需致电即可。

  • 问题内容: 我需要获取数组的所有可能的子集,其中至少要包含2个项目,而最大未知数。有人可以帮助我一点吗? 说我有这个… …我怎么得到这个? 问题答案: 窃取此JavaScript组合生成器后,我添加了一个参数以提供最小长度,从而, 要使用,提供一个数组以及所需的最小子集长度, 输出是

  • 假设数组是,现在获取此数组的所有子数组。对于每个子数组,在该子数组中找到最小值,也找到该子数组中的项目之和。最后添加所有这些值。输入无法按我想要的所有可能的子数组进行排序。 例子: 可能的子阵列包括: 最后,将所有这些值相加,得到结果=1 3 6 4 10 9=33。 约束:数组元素的范围从1到1000\u 000\u 000。数组大小从1到100\u 000。将输出作为模块7 1000\u 00

  • 问题内容: 这里是问题:我有一个元组列表(也可以根据需要设置)。例如: 我想找到一个清单 因为一旦将所有集合放在一起,交集就不会为空。 举个例子 结果应该是 希望问题解决。那么,如果有的话,在python中最优雅的方法是什么? 干杯 问题答案: 这些是图形的 连接组件 ,可以使用诸如的图形库找到。对于第二个示例:

  • 问题内容: 表_1 D_ID整数 Deposit_amt整数 表_2 Total_ID Total_amt整数 是否有可能写一个SELECT语句来找到所有的行,其总和为中。两个表中都有多个行。 假设第一行中有一个。我想知道,在与行2,6,12求和= 100,行2,3,42求和= 100,等。 帮助表示赞赏。让我知道是否需要澄清。 我问这个问题,因为某人作为工作的一部分,拥有交易清单和总计清单,她需