Более многословно, чем приведенные выше ответы, но измените список на месте, а не создавайте его копию (понятия не имею, что будет быстрее - копирование может быть хорошим способом!)
lst = [{'title': u'Politics', 'id': 1L, 'title_url': u'Politics'},
{'id': 3L, 'title_url': u'Test', 'title': u'Test'}]
for i in xrange(len(lst)-1,0,-1):
if lst[i].get("title")=="Test":
del lst[i]
Изменяет список на месте, а не копирует его, справляется с удалением нескольких диктов, в которых есть "title": "Test", и справляется, если такого диктанта нет.
Обратите внимание, что .get ("title") возвращает None, если нет соответствующего ключа, тогда как ["title"] вызывает исключение.
Если бы вы могли гарантировать, что будет только один соответствующий элемент, который вы также можете использовать (и захотите изменить его вместо копирования)
for i,d in enumerate(lst):
if d.get("title")=="Test":
del lst[i]
break
Наверное, проще всего придерживаться
[x for x in lst if x.get("title")!="Test"]