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

时间:2013-02-14 13:11:19

标签: python regex list dictionary indexing

我有一个清单:

[
  {
    'avail': 'blabla',
    'rep_main': 'qweqwe',
    ....
  },
  {
    'avail': 'asdasd',
    'rep_main': 'zxczxc',
    ....
  },
  ...
]

我想通过regexp获取项目的索引 这就像没有正则表达式的版本:

[list['rep_main'] for elem in list].index('qweqwe')

1 个答案:

答案 0 :(得分:5)

如果pattern是模式且rethe 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']))