Вопрос по iterator, loops, associative-array, dictionary, python – итерация одного ключа в многомерном ассоциативном массиве Python

0

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

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

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

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

Спасибо

Да, словарь. Joel Cornett
возможный дубликатiterate over a single dimension in python dictionary Marcin

Ваш Ответ

3   ответа
3

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

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

4

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

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

last_names = list(myhash['john'])

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

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

Похожие вопросы