通过regexp获取列表中的字典项索引

OLM*_*MER 0 python regex indexing dictionary list

我有一个清单:

[
  {
    'avail': 'blabla',
    'rep_main': 'qweqwe',
    ....
  },
  {
    'avail': 'asdasd',
    'rep_main': 'zxczxc',
    ....
  },
  ...
]
Run Code Online (Sandbox Code Playgroud)

我希望通过regexp获取项目的索引这就像没有regexp的版本:

[list['rep_main'] for elem in list].index('qweqwe')
Run Code Online (Sandbox Code Playgroud)

Lev*_*sky 5

如果pattern是图案rere模块:

[i for i, elem in enumerate(mylist) if re.match(pattern, elem['rep_main'])]
Run Code Online (Sandbox Code Playgroud)

你可以用re.search而不是re.match.

enumerate是一个方便的内置函数,让您使用没有for i in range(len(mylist))丑陋的索引.

注意:上面的表达式显然评估为一个列表..index()method返回第一个匹配的索引.要实现这一点,请写:

next(i for i, elem in enumerate(mylist) if re.match(pattern, elem['rep_main']))
Run Code Online (Sandbox Code Playgroud)