Example solution
I am not sure it is "beautiful/Pythonic enough", but it is surely short and works without additional modules:
def get_amt(name):
return lambda x: x['amt'] if x['Name']==name else 0
names = sorted(set(map(lambda x: x['Name'], data)))
result = [{'Name':name,'amt':sum(map(get_amt(name), data))} for name in names]
Proof
Proof is here: http://codepad.org/L1gcTpVK
If you supply data
as in the question, the result
will be equal to this:
[{'Name': 'A', 'amt': 1000}, {'Name': 'B', 'amt': 200}, {'Name': 'C', 'amt': 900}]
which is exactly as requested :)