Lots of great ways to do it. The canonical one in Python is probably to use a collections.Counter
from collections import Counter
c = Counter([d['name'] for d in a])
for value,count in c.items():
if count > 1:
print(value)
If all you need to know is whether or not something is a duplicate (not how many times it has been duplicated), you can simplify by just using a seen set.
seen = set()
for d in a:
val = d['name']
if val in seen:
print(val)
seen.add(val)
Probably the most over-engineered way to do it would be to sort the dicts by their "name" value, then run a groupby and check each group's length.
from itertools import groupby
from operator import itemgetter
namegetter = itemgetter('name')
new_a = sorted(a, key=namegetter)
groups = groupby(new_a, namegetter)
for groupname, dicts in groups:
if len(list(dicts)) > 1:
print(groupname)