我遇到了以下问题: 我在python中为Ensight(一个可视化CFD计算的程序)编写了一个脚本。 Ensight程序为我提供了一个时间值列表,如:
print ensight.query(ensight.TIMEVALS)['timevalues']
[[0, 0.0], [1, 9.99e-07], [2, 1.99e-06], [3, 0.0003],etc.]
每个列表中的第一个值是时间步长,第二个值是此时间步的实际时间。现在我想以某种方式询问时间步长' 2'并想知道列表的相应第二个值。因此,如果我能找到时间步的索引,我可以轻松获得相应的时间值。
EDIT \\ 它现在解决了这个问题:
time_values = ensight.query(ensight.TIMEVALS)['timevalues']
for start,sublist in enumerate(time_values):
if step_start in sublist:
index_begin = start
for end,sublist in enumerate(time_values):
if step_stop in sublist:
index_end = end
答案 0 :(得分:1)
也许这就是你想要的?
print ensight.query(ensight.TIMEVALS)['timevalues'][1][1]
这应打印9.99e-07,因为它是主列表中第二个列表中的第二个值。
我只是想知道为什么你有3个开口,只有2个关闭括号。这是拼写错误吗?
[[[..] ..]
如果你有一个像myList = [[0,0.0],[1,9.9999-07],[2,1.99e-06],[3,0.0003]等列表。 您可以使用myList [0]访问第一个嵌套列表,结果为[0,0.0] 要访问该列表中的第二个值,您可以使用myList [0] [1]
答案 1 :(得分:1)
将n设置为所需的时间步长值
>>> n=2
>>> print [list[1] for list in ensight.query(ensight.TIMEVALS)['timevalues'] if list[0]=n ]
这也可以在你的情况下扩展
>>> from=2
>>> to=100
>>> print [list[1] for list in ensight.query(ensight.TIMEVALS)['timevalues'] if (list[0]>from && list[0]<to) ]
答案 2 :(得分:1)
>>> l = ensight.query(ensight.TIMEVALS)['timevalues']
>>> print l
[[0, 0.0], [1, 9.99e-07], [2, 1.99e-06], [3, 0.0003]]
>>> _d = {int(ele[0]): ele[1] for ele in l}
>>> print _d[2]
1.99e-o6