Cómo hacer esto - Python dictionary traverse and search

He anidado diccionarios:

{'key0': {'attrs': {'entity': 'p', 'hash': '34nj3h43b4n3', 'id': '4130'},
          u'key1': {'attrs': {'entity': 'r',
                              'hash': '34njasd3h43b4n3',
                              'id': '4130-1'},
                    u'key2': {'attrs': {'entity': 'c',
                                        'hash': '34njasd3h43bdsfsd4n3',
                                        'id': '4130-1-1'}}},
          u'key3': {'attrs': {'entity': 'r',
                              'hash': '34njasasasd3h43b4n3',
                              'id': '4130-2'},
                    u'key4': {'attrs': {'entity': 'c',
                                        'hash': '34njawersd3h43bdsfsd4n3',
                                        'id': '4130-2-1'}},
                    u'key5': {'attrs': {'entity': 'c',
                                        'hash': '34njawersd3h43bdsfsd4n3',
                                        'id': '4130-2-2'}}}},
 'someohterthing': 'someothervalue',
 'something': 'somevalue'}

dado unid - uno de todos losids me gusta4130 a4130-2-2.
¿Cuál es la forma más fácil de navegar al diccionario correcto?

Como si el dadoid es4130-2-1 entonces debería llegar al diccionario conkey=key5

enfoques no xml por favor.

Editar (1): El anidamiento es entre1 a4 niveles, pero sé la anidación antes de analizar.

Editar (2): Corregido el código.

** Editar (3): ** Código fijo de nuevo para valores de cadena deids. Por favor, disculpe la confusión creada. Esto es final, espero :)

Respuestas a la pregunta(7)

Su respuesta a la pregunta