2011-04-10 17 views
2

タプルをキーとしタプルを値として持つ辞書があります。そのキーに基づいて辞書の値にアクセスする方法が必要です。たとえば は:辞書のタプル値を確認する

d = {} 
d = { (1, 2) : ('A', 'B'),(3, 4) : ('C', 'B') } 

さて、最初に私は、キー(1, 2)が既に辞書に存在するかどうかを確認する必要があります。

ような何か:

if d.has_key(1,2) 
    print d[1] 
    print d[2] 

答えて

4

あなたは単にキーとしてリテラルのタプルを使用することができます。

>>> d = {(1, 2): ('A', 'B'), (3, 4): ('C', 'D')} 
>>> (1, 2) in d 
True 
>>> d[(1, 2)] 
('A', 'B') 
>>> d[(1, 2)][0] 
'A' 
0

あなたが他のどの時点で同じようにするだけの辞書を使用して...

potential_key = (1,2) 
potential_val = d.get(potential_key) 
if potential_val is not None: 
    # potential_val[0] = 'A' 
    # potential_val[1] = 'B' 
2

f(a, b)は、括弧とカンマがconsuであるため、2つの引数を持つ呼び出しfとして扱われるという問題があります関数呼び出しの構文の一部として、tupleのように見えるものは何も残しません。リテラルタプルを関数に渡す必要がある場合は、f((a, b))を使用してください。

しかしdict.has_keyので、ちょうどinを使用し、非推奨、この不便さが消えている:(1, 2) in d