1

重複の可能性:
Python 多次元連想配列で 1 つのキーを反復する

2 次元の辞書を作成しました myaddresses['john','smith'] = "住所 1" myaddresses['john','doe'] = "住所 2"

ファッションで1つの次元を反復するにはどうすればよいですか

for key in myaddresses.keys('john'):
4

3 に答える 3

3

悪いニュース: できません (少なくとも直接的にはできません)。あなたがしたのは「2次元」の辞書ではなく、タプル(あなたの場合は文字列のペア)をキーとして持つ辞書であり、キーのハッシュ値のみが使用されます(通常はハッシュテーブルと同様)。必要なものには、順次ルックアップが必要です。つまり、次のようになります。

for key, val in my_dict.items():
    # no garantee we have string pair as key here
    try:
        firstname, lastname = key
    except ValueError:
        # not a pair...
        continue
    # this would require another try/except block since
    # equality test on different types can raise anything
    # but let's pretend it's ok :-/
    if firstname == "john":
        do_something_with(key, val)

言うまでもなく、それはdictを使用することの全体的なポイントを打ち負かします。エラー...代わりに適切なリレーショナルDBを使用するのはどうですか?

于 2012-07-07T19:48:35.377 に答える
2

試す:

{k[1]:v for k,v in myaddresses.iteritems() if k[0]=='john'}
于 2012-07-07T19:38:41.570 に答える
1

すべてのキーを繰り返し処理するため、最も効率的な方法ではないかもしれませんが、見落としがある場合に備えて、明白な方法を述べておきます。

for key in myaddresses.keys():
    if key[0] == 'john':
        print myaddresses[key]
于 2012-07-07T19:37:33.473 に答える