重複の可能性:
Python 多次元連想配列で 1 つのキーを反復する
2 次元の辞書を作成しました myaddresses['john','smith'] = "住所 1" myaddresses['john','doe'] = "住所 2"
ファッションで1つの次元を反復するにはどうすればよいですか
for key in myaddresses.keys('john'):
重複の可能性:
Python 多次元連想配列で 1 つのキーを反復する
2 次元の辞書を作成しました myaddresses['john','smith'] = "住所 1" myaddresses['john','doe'] = "住所 2"
ファッションで1つの次元を反復するにはどうすればよいですか
for key in myaddresses.keys('john'):
悪いニュース: できません (少なくとも直接的にはできません)。あなたがしたのは「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を使用するのはどうですか?
試す:
{k[1]:v for k,v in myaddresses.iteritems() if k[0]=='john'}
すべてのキーを繰り返し処理するため、最も効率的な方法ではないかもしれませんが、見落としがある場合に備えて、明白な方法を述べておきます。
for key in myaddresses.keys():
if key[0] == 'john':
print myaddresses[key]