python中列表列表中的项目索引

时间:2013-10-31 06:57:30

标签: python-2.7 indexing nested-lists

我遇到了以下问题: 我在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

3 个答案:

答案 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