我有一个二维数组,可以打印出以下内容:
[[0, {'dt_name': 'Go'}], [1, {'dt_name': 'Stop'}]]
我想迭代此列表,以便在 dt_name
为 Go
时检索索引值(第一个元素)。 IE。返回应该是0
。如果dt_name
为Stop
,则返回为1
。
我该怎么做?
最佳答案
一种方法是使用next
在generator expression上
lst = [[0, {'dt_name': 'Go'}], [1, {'dt_name': 'Stop'}]]
res = next(i for (i, t) in lst if t['dt_name'] == 'Go')
print(res)
输出
0
这种方法避免了构建任何额外的列表。
列表与生成器的一些计时:
lst = [[0, {'dt_name': 'Go'}], [1, {'dt_name': 'Stop'}]] * 100
%timeit next(i for (i, t) in lst if t['dt_name'] == 'Go')
452 ns ± 2.18 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%timeit [i for (i, t) in lst if t['dt_name'] == 'Go'][0]
12.1 µs ± 36.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
在上面的示例中,在生成器上使用 next 大约快了 24 倍。
关于python - 从二维数组获取索引,其中第一个元素是索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69615719/