2011-08-02 28 views
4

Pythonではこれらの2つの文は何を意味しますか?Pythonの辞書

distances[(clust[i].id,clust[j].id)]=distance(clust[i].vec,clust[j].vec) 

d=distances[(clust[i].id,clust[j].id)] 

私は、最初の文はdistance(..)関数の結果に距離マップのclust[i].idclust[j].idキーを割り当てることを推測しています。しかし、リストは[]を使用して表現され、辞書は{}をPythonで使用するので混乱します。正解は何ですか?

+0

"しかしリストは[]とPythonで{}を使って辞書を使って表現されるので混乱します。"何? '[]'はアイテムを取得するためのものであり、リストを表現するものではありません。何がリストと関係していると思いますか? –

+0

また、 'anything [(a、b)]'は、 'for x、y in z:'や 'for x in y、z:'と同じように 'anything [括弧は必要ありません。 –

+0

@S。 Lott。これは、あなたよりも特定のプログラミング言語に関する事実知識が少ない人々を助けるあなたの方法ですか? – Dhruv

答えて

4
distances[(clust[i].id,clust[j].id)]=distance(clust[i].vec,clust[j].vec) 

distancesのおそらく整数とがによってそれらの間の距離を測定し、タプルですキー辞書ですdistance機能2行目の :

d=distances[(clust[i].id,clust[j].id)] 

d変数はちょうどだけ割り当て辞書値にアクセスし、その距離に割り当てられます。 他の回答は辞書の要約を提供します。

+1

あなたの説明をありがとう! – Dhruv

+0

ようこそ。 – BrainStorm

6

辞書リテラル使用{}。インデックス処理では、タイプに関係なく[]が使用されます。

2

うまくいけば、これはそれを明確にします:

>>> a = {} 
>>> a[1] = 2 
>>> a[(1, 2)] = 3 
>>> a 
{(1, 2): 3, 1: 2}