0

2次元の連想配列を動的に作成しています(辞書?)

インデックスの1つを一定に保ちながら、キーをループしようとしています。たとえば、最初の角かっこに「john」が含まれる「key」に関連付けられているすべての値は次のとおりです。

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

最初のインデックスを「john」のままにして、各「キー」のハッシュのすべてのキーを取得するにはどうすればよいですか(すべての姓が必要です)

ありがとう

4

3 に答える 3

4

myhash['john']それ自体が辞書です。(多次元辞書を作成するのではなく、辞書の辞書を作成します。)

したがって...

last_names = list(myhash['john'])

または、ループで何かをしたい場合...

for last_name in myhash['john']:
    # do something with last_name
于 2012-07-07T19:15:51.893 に答える
3

以前の質問に答えたときにすでに言及しました。四角い車輪を再発明しようとしているようです。述べられた必要性を考えると、姓の部分でもルックアップを実行する可能性があります。その後、ステップ 1 (データセット全体を順番に参照して「第 2 レベル」キーをテストする) に戻るか、「姓」を維持します。 lastname:[firstname1, firstname2, firstnameN] を格納するインデックス。これにより、シーケンシャル ブラウジングが減少し (抑制はされません)、挿入または削除時に更新する必要があります。

IOW では、リレーショナル データベースでできることのほとんどを再実装していますが、実装が安価な RDB よりも高速または堅牢になる可能性はほとんどありません。記録としては、SQLite3 のような非常に軽量なファイル ベース (サーバー プロセスなどは不要) の RDB エンジンがあります ( Python バインディングは stdlib にあるため、特別なものをインストールする必要さえありません)。

于 2012-07-07T20:30:43.033 に答える
1
>>> for k in myhash['john']:
...     print(k)
... 
smith
doe
于 2012-07-07T19:16:06.310 に答える