我有一个清单:
[
{
'avail': 'blabla',
'rep_main': 'qweqwe',
....
},
{
'avail': 'asdasd',
'rep_main': 'zxczxc',
....
},
...
]
我想通过regexp获取项目的索引 这就像没有正则表达式的版本:
[list['rep_main'] for elem in list].index('qweqwe')
答案 0 :(得分:5)
如果pattern
是模式且re
是the re
module:
[i for i, elem in enumerate(mylist) if re.match(pattern, elem['rep_main'])]
您可以使用re.search
instead of re.match
。
enumerate
是一个方便的内置函数,可让您使用没有for i in range(len(mylist))
丑陋的索引。
注意:上面的表达式显然评估为一个列表。 .index()
方法返回第一个匹配的索引。要实现这一目标,请写下:
next(i for i, elem in enumerate(mylist) if re.match(pattern, elem['rep_main']))