итерация одного ключа в многомерном ассоциативном массиве Python

Я динамически создаю двумерный ассоциативный массив (словарь?)

Я пытаюсь пройтись по его ключам, сохраняя постоянным один из индексов, например, все значения, связанные с «ключом»; с "Джоном" в первой скобке:

myhash['john']['smith'] = "address 1"
myhash['john']['doe'] = "address 2"

как я могу получить все ключи хэша для каждого & quot; ключа & quot; сохраняя первый индекс как «john»; (я хочу все фамилии)

Спасибо

 Joel Cornett07 июл. 2012 г., 21:28
Да, словарь.
 Marcin07 июл. 2012 г., 22:32
возможный дубликатiterate over a single dimension in python dictionary

Ответы на вопрос(3)

отвечая на ваш предыдущий вопрос Похоже, вы пытаетесь изобрести квадратное колесо. Учитывая вашу заявленную потребность, скорее всего, вы тоже захотите выполнить поиск по части фамилии, а затем она вернется к шагу 1 (просматривая весь набор данных, последовательно проверяя ключ «2-го уровня») или поддерживая & Quot; & Lastname Quot; индекс, хранящий фамилию: [firstname1, firstname2, firstnameN], которая уменьшает (но не подавляет) последовательный просмотр и требует обновления при любой вставке или удалении.

Теперь вы переопределяете большинство возможностей реляционной базы данных, и очень маловероятно, что ваша реализация будет быстрее или надежнее, чем даже более дешевая RDB. Для записи есть очень легкие, основанные на файлах (не требующие серверного процесса и т. Д.) Движки RDB, такие как SQLite3 (Привязки Python находятся в stdlib так что вам даже не нужно устанавливать ничего особенного).

myhash['john'] сам по себе словарь. (Вы создаете не многомерный словарь, а словарь словарей.)

Таким образом, ...

last_names = list(myhash['john'])

или если вы хотите сделать что-то в цикле ...

for last_name in myhash['john']:
    # do something with last_name
>>> for k in myhash['john']:
...     print(k)
... 
smith
doe

Ваш ответ на вопрос