The wait for the table view to become valid can be very short, as short as 0.01 seconds, apparently. Unfortunately there's no simple way to be notified when a UIView becomes visible (anyone have a generic notification-y way of doing that?), and even then I don't know that just being visible for a table view is the same as it having valid rows/indices.
Also, to scroll to a specific row turns out to be very easy, once you have a table view with valid indexes displayed:
Ok here is a gist that just adds a class subclassed from OrderedDict to help assemble the OrderedDict. It also adds the section_key method. It's trivial, but I think helpful. Just building on @ccc idea. This one only works with py3