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

Python: associating a description to each combination of itertools.product

我有一个 运行 数值模拟的函数。我想为每个参数定义一些可能的输入,并 运行 函数在所有可能的组合上。我现在使用的方法是使用 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 时,如何将 'optimistic assumptions' 传递给我的函数?

我考虑过在列表中查找项目的函数,但我不确定它们是否适用于所有对象,例如 pandas 数据框。

谢谢! PS 我不必不惜一切代价使用 itertools,我可以考虑基于其他方法的替代方案。

为什么不简单地将描述连同相关数据帧作为元组(或字典或任何其他适合您目的的数据类型)传递给 itertools.product

示例:

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 制作的不同笛卡尔积。您也可以为此目的使用字典,当您有描述数据帧的元数据时,这实际上是一个不错的选择。