【发布时间】:2012-01-26 17:34:12
【问题描述】:
python新手在这里。我正在编写代码来控制具有多个变量的实验。变量在 csv 文件中定义,如下所示:
Temp, Voltage, Pressure
23, 4.8, 19
23;28, 4.8, 19;23
我阅读了文件并创建了一个字典,这部分工作正常。例如第一行将是:
{'Temp': ['23'], 'Voltage': ['4.8'], 'Pressure': ['19']}
这将控制一个实验。 第二行将是:
{'Temp': ['30', '28'], 'Voltage': ['4.8'], 'Pressure': ['19', '23']}
我想要的是一种从该行按顺序生成所有可能字典的方法。例如第二行将扩展为四个实验:
{'Temp': ['30'], 'Voltage': ['4.8'], 'Pressure': ['19']}
{'Temp': ['30'], 'Voltage': ['4.8'], 'Pressure': ['23']}
{'Temp': ['28'], 'Voltage': ['4.8'], 'Pressure': ['19']}
{'Temp': ['28'], 'Voltage': ['4.8'], 'Pressure': ['23']}
顺序很重要(最后一列是内循环)。我有一个列表,其中包含我想要迭代的顺序的键。例如:
('Temp', 'Voltage', 'Pressure')
在这种情况下。
这过于简单化了,系统中有大量的变量(列)。
我正在考虑一个带有计数器的并行字典来跟踪每个变量的可能情况和当前情况,但也许我错过了一种更优雅的方式来在 python 中表达这一点。
问候,
--ga
【问题讨论】:
-
我怀疑
itertools.product()可以在这里使用:docs.python.org/py3k/library/itertools#itertools.product -
@ThomasK 它看起来更像是一个答案而不是评论
-
@0xc0de:这还不够完整,无法回答。 AdamKG 写了更完整的描述,但仍需要扩展以应对任意数量的列。
-
说到列:首先不要将变量放在字典中可能更容易,因为您需要它们以已知的顺序使用
product()(并且字典是无序的)。
标签: python python-3.x