我有15个像下面3个一样的词(15个词的长度都不一样)。 例如:
HQDict = {'HQ1':10, 'HQ2':3, 'HQ3':5}
BADict = {'BA1':15, 'BA2':4, 'BA3':3}
STDict = {'ST1':5, 'ST2':4, 'ST3':3}
我想创建15个dict的所有可能的组合,每个dict只选择一个元素,将值加在一起,键存储在一个列表中。我已经能够把所有的信息都写进各自的口述中,但是我不知道从哪里开始组合,我已经看到了工具组合但我不确定如何使它只从每个dict中选择一个元素。如果您需要更多信息,请询问,我很乐意编辑。在
编辑1: 我还需要补充的是,这些值是相加的,所以BA2的值是BA1+BA2的值,组合可以是1的列表。在
^{pr2}$编辑2:
与其尝试创建dicts的组合,最终目标是给函数一个总数,它将返回所有可能的建筑组合(每个dict代表一个建筑,dict中的每个项目都是一个级别),这些组合加起来就是这个总数。例如:
combinations(34) would return
[HQ1,BA2,ST1]
and combinations(13 would return
[HQ2]
粘贴到包含所有建筑物和im用于创建dicts的代码的文件:link to pastebin
请改用
itertools.product(..)
。它需要一个不同的参数列表,每个参数对应一个要在一次迭代中选择的选项列表:如果你有15条这样的话,我建议把它们都列在一个列表中,然后调用下面这样的产品:
^{pr2}$编辑:在python3中,您将获得一个map对象,并且您必须迭代它以获得实际值。您可以将其转换为一个列表,但这将破坏map返回您可以迭代的内容的目的。您可以转换为如下列表:
相关问题 更多 >
编程相关推荐