2016-12-10 6 views
0

私はPythonが初めてで、キーがタプルである辞書から値を取得する必要があるという問題があります。たとえば:キーがタプルであるときの辞書値へのアクセス

ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5} 

私は、それぞれの数字キーでものを表示され、私はキー(値は3になります)に番号2を持っている値にアクセスしたいことを知っています。

この値へのアクセス方法について助けがありますか?

+1

辞書には、あなたがそれにアクセスしようとするキーを含める必要があります。 – TigerhawkT3

答えて

1

次の理解を使用して辞書を「フラット化」できます。

ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5} 

flat = {element: value for key, value in ones.items() for element in key} 

今、あなたはflat経由タプルから任意のキーの値を取得することができます。

1

あなたはものを反復処理し、2キー

In [24]: ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5} 

In [25]: for k, v in ones.iteritems(): 
    ....:  if 2 in k: 
    ....:   print v 
    ....:   
3 
0

キーの1サブ要素を探しているときは、通常の辞書のアクセスを使用することはできませんに存在しているかどうかを確認することができます。

は最初の一致(「first」は辞書が順序付けされていないため)が見つかるでしょう。

あなたのタプルの要素は、実際に、ユニークであなたの代わりにキーとしてタプルの要素を使用して、あなたの辞書最初の変換、その後、複数のルックアップを行う必要がある場合:

converted = {t_elem: value for key in ones for t_elem in key} 

は心配しないでくださいここで価値重複。値は一意である必要はなく、すべての参照を保存するだけです。上記は値のコピーを作成しません。

今、あなたは再び高速にキー検索を使用することができます。

value_for_2 = converted[2] 
0
ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5} 
for key, value in ones.items(): 
    if 2 in key: 
     print(value) 

アウト:

3 
関連する問題