There are a few places where statically defining dictionary keys, rather than iterating through each key for sub-dictionaries, is actually pretty safe. For instance, each response begins with the same few keys at the beginning.
However, there's a lot of places where you've defined strings of dict keys statically to get things working for a demo. For instance, you statically define OSPF process name. You've tried to place TODOs wherever possible, but the entire thing should be reviewed.
Basically, everywhere you see a ROW, you should perform a list iteration. It may only run once, but you never know. A good example is the output of "show ip ospf CLOS" - if there are multiple areas in that instance, then ROW_area will be nested inside a list. If there's only one, then the list brackets go away.
Would have been more convenient for NXAPI to encap this in brackets all the time, but it is what it is. This means you may have to check if a node like this is another dict (single item) or list (multiple items)