Python:将描述与itertools.product的每个组合相关联

Python:将描述与itertools.product的每个组合相关联,python,itertools,cartesian-product,Python,Itertools,Cartesian Product,我有一个运行数值模拟的函数。我想为每个参数定义一些可能的输入,并在所有可能的组合上运行该函数。我现在的做法是使用itertools: param1=['London','New York','Paris'] param2=[dataframe1,dataframe2] param2_description =['optimistic assumptions','conservative assumptions' ] myprod = itertools.product(param1, par

我有一个运行数值模拟的函数。我想为每个参数定义一些可能的输入,并在所有可能的组合上运行该函数。我现在的做法是使用itertools:

param1=['London','New York','Paris']
param2=[dataframe1,dataframe2]
param2_description =['optimistic assumptions','conservative assumptions' ]


myprod = itertools.product(param1, param2)
for i in myprod:
    myresult = myfunction(i[0],i[1])
我的问题是:如何将描述与参数的每个可能值相关联,并将其传递给函数?换句话说,当i[0]=dataframe1时,如何将“乐观假设”传递给函数

我考虑过在列表中查找项目的函数,但我不确定它们是否能处理所有对象,比如熊猫数据框

谢谢!
PS我不必不惜一切代价使用迭代工具,我可以基于其他方法考虑备选方案。

< P>为什么不简单地把描述和相关的数据文件一起作为一个元组(或DICT或任何其他适合您的目的的数据类型)提交给<代码>迭代器? 例如:

In [14]: myprod1 = itertools.product(param1, zip(param2, param2_description)) # remark: replaced the dataframes simply by letters

In [15]: list(myprod1)
Out[15]: 
[('London', ('a', 'optimistic assumptions')),
 ('London', ('b', 'conservative assumptions')),
 ('New York', ('a', 'optimistic assumptions')),
 ('New York', ('b', 'conservative assumptions')),
 ('Paris', ('a', 'optimistic assumptions')),
 ('Paris', ('b', 'conservative assumptions'))]

对于
myprod1
中的每个项目,您现在可以在数据帧(
item[1][0]
)上运行模拟,而
item[1][1]
)中提供了该数据帧的描述,并且您可以将其用于itertools制造的不同笛卡尔产品。您也可以使用字典来实现此目的,当您拥有描述数据帧的元数据时,这实际上是一个不错的选择。

您不能将
param2_description
转换为字典
{dataframe1:'乐观假设',…}
,然后简单地传递
param2_description[i[0]]
?字典的键不需要是字符串吗?我会使用dataframe对象作为字典的键吗?你到底想要什么作为输出?@freakish我可以让itertools在字典的键上迭代。这将允许我检索值和描述。谢谢我应该想到…@Pythonistaanonymous字典键不必是字符串。它们可以是任何不可变的对象。但如果你找到了不同的解决方案,那就很酷了。