Потому что map принимает list в качестве второго аргумента, а приведение dict к list - это список ключей, так что obj в lambda будет строкой.
Можно посмотреть, что покажут эти print для понимания:
print (list(a))
print (list(map(lambda x: x, a)))
Решение: вместо obj['id'] использовать в lambda-выражении a[obj]['id']