I agree with what you're trying to do, but it gets sticky when some parts of Ignition/Perspective expect the view to be "proper" JSON, which enforces more restrictions on keys than Python dicts do...
Among other things, they must start with a letter (no numbers or other symbols) and are not supposed to have spaces in them. Some bits of Ignition will start complaining if you break these rules.
Again, I really like your idea and wish IA could make it happen, because I hate traversing tag config trees and/or view trees in their JSON format right now. Having to walk and check each member of a list looking for a matching name is annoying. I'm just pointing out the reason I'm aware of that would explain why they did it the way they did.
And while it's far less pretty than your "new" style, this is currently possible:
def lookup(array, name, key='name'):
return next(iter(x for x in array if x[key] == name))
tagType = lookup(lookup(lookup(sample['tags'],'Area 2')['tags'],'Sub Area 2')['tags'],'Tag 1')['tagType']