Estoy creando dinámicamente una matriz asociativa bidimensional (¿diccionario?)
Estoy tratando de hacer un bucle a través de sus claves, mientras mantengo uno de los índices constantes, así que, por ejemplo, todos los valores asociados a “clave” con “john” en su primer corchete:
myhash['john']['smith'] = "address 1" myhash['john']['doe'] = "address 2"
¿Cómo puedo obtener todas las claves del hash para cada “clave” manteniendo el primer índice como “John” (quiero todos los apellidos)?
Gracias
myhash['john']
es en sí mismo un diccionario. (No está creando un diccionario multidimensional, sino un diccionario de diccionarios).
Así…
last_names = list(myhash['john'])
o si quieres hacer algo en un bucle …
for last_name in myhash['john']: # do something with last_name
Ya lo mencioné al responder a tu pregunta anterior : parece que estás tratando de reinventar la rueda cuadrada. Dada su necesidad declarada, es probable que también desee realizar una búsqueda en la parte del apellido, y luego volver al paso 1 (examinar el conjunto de datos completo probando secuencialmente la tecla “2do nivel”) o mantener un “apellido” índice que almacena el apellido: [firstname1, firstname2, firstnameN] que reduce (pero no suprime) la búsqueda secuencial y debe actualizarse en cualquier inserción o eliminación.
IOW, está reimplementando la mayor parte de lo que puede hacer una base de datos relacional, y es muy poco probable que su implementación sea más rápida o más robusta que incluso la RDB más barata. Para el registro, hay motores RDB muy ligeros, basados en archivos (sin necesidad de un proceso de servidor, etc.) como SQLite3 (los enlaces de Python están en la stdlib, por lo que ni siquiera tiene que instalar nada especial).
>>> for k in myhash['john']: ... print(k) ... smith doe