2016-07-29 18 views
1

私はPythonには新しく、dict of pairsをpythonで作ろうとしていました。私はc++で行われているだろう何 は私がPythonで同じことを行うことができますどのように確認していないPythonでの辞書の辞書

dist[make_pair(a,b)]=1 

ある

編集私は基本的にやりたいことは二つの整数のペアをマップすることである 例 -

(1,2) -> 1 
(1,3) -> 2 
(2,1) ->3 

のためのいくつかの付加価値 に私はいくつかの整数値にペアをマップしたい

+3

'make_pair'が何をするのかわからないので、私はどちらかというと分かりません:) –

+0

申し訳ありませんがあまり明確ではありません。これは、最初の要素がaに設定され、2番目の要素がbに設定されたペアオブジェクトを構築します。 – Noober

+0

期待される出力は何ですか?適切な回答を得たい場合は、[Minimal、Complete、and Verifiable example](http://stackoverflow.com/help/mcve)を質問に追加する必要があります。 – Kasramvd

答えて

4

データ構造「タプル」を辞書のキーとして使用できます。 n個の入力が与えられたn個のタプルを返す関数を定義したい場合、それも可能です。これは(B)の値としてキーとして、1、あなただけ有するタプルを有する素子を作成するには(a、b)は、ある1

+2

不変型は、辞書キーの要件であるハッシュ値を持ちます。 –

+1

式を作成するコンマはカッコではなくタプルを作成するので、それらのカッコを省略することができます。 'dict_example [a、b] = 1'はうまく動作します。 – Duncan

+0

@ Nooberこれらのコメントはどちらも素晴らしいですし、私の答えを改善してください –

2

キーの値を出力

a = 4 
b = 5 

dict_example = dict() 
dict_example[(a,b)] = 1 

print dict_example[(a,b)] 

行うには:

new_dict = {(a,b) : 1} 

、このような辞書は既に存在している、とあなたは、値としてキーと1として、あなたがしなければならないB、ペアを追加したい場合は、次の

existing_dict[(a,b)] = 1 

Duncanが指摘しているようにexisting_dict[a,b] = 1を使用することもできます。

+0

同じことについては、単に 'existing_dict [a、b] = 1'です。 – Duncan

1

私はあなたが同じように、辞書のキーとして配列を使用してみました推測:[OK]を、それは何である

​​

? Pythonのdictキーは変更できません。数値、文字列、その他のハッシュ可能な型にすることができます。リスト、辞書、その他の変更可能なコレクションのような変更可能な型は使用できません。

非常にリストに似ていますが、変更できないコレクションがあります:タプル。

>>> d[tuple(pair)] = 'foo' 
>>> d 
{(1, 2): 'foo'} 

ご覧のとおり、タプルのリテラルは(v1, v2, ..., vN)です。それがあいまいでない場所で、あなたも、括弧を省略することができます。

>>> pair = 0, 1 
>>> pair 
(0, 1) 

コードをリファクタリングしながら、私は末尾のカンマを去ったとき、私はこのことで少しだった回以上:

ある
>>> x = 1, # I meant x = 1 
>>> x 
(1,) 

をただ1つの要素を持つタプルのためのリテラル。