2016-05-07 11 views
-1

キーの順序は保証されていませんが、それは問題ありませんが、値の順序も保証されていないことを正確にはどういう意味ですか*?例えば辞書としての行列。それは安全ですか?

、私はこのように、辞書のように行列を表現しています:

signatures_dict = {} 
M = 3 
for i in range(1, M): 
    row = [] 
    for j in range(1, 5): 
     row.append(j) 
    signatures_dict[i] = row 
print signatures_dict 

は私の行列の列が正しく構築されていますか?私は3行あり、このsignatures_dict[i] = row行に、rowは常に1、2、3、4、5を持っているとしましょう。signatures_dictは何ですか?

1 2 3 4 5 
1 2 3 4 5 
1 2 3 4 5 

または

1 2 3 4 5 
1 4 3 2 5 
5 1 3 4 2 

のようなもの?クロスプラットフォームサポートが心配です。

私のアプリケーションでは、行は単語と列ドキュメントなので、最初の列は最初のドキュメントです。あなたが保証されます* Are order of keys() and values() in python dictionary guaranteed to be the same?

答えて

1

は、各行の1 2 3 4 5持っています。それはそれらを並べ替えることはありません。 values()の注文の不足は、signatures_dict.values()を呼び出すと値が任意の順序で出てくる可能性があるという事実を指します。しかし、値は行であり、各行の要素ではありません。各行はリストであり、リストはその順序を維持します。

注文を維持辞書をしたい場合は、Pythonはあまりにもことがあります。https://docs.python.org/2/library/collections.html#collections.OrderedDict

+0

ジョンさんがアップしてくれてありがとう。私のアプリケーションでは、行は単語と列ドキュメントなので、最初の列が最初のドキュメントだと言えますか? – gsamaras

+0

@gsamaras:はい。 –

+0

ああ、すばらしいジョンなので、キーの順序は値の順序と同じになります。これは 'signatures_dict.keys()[0]'は最初のキー(最初に格納されたもの)と 'signatures_dict.values()[0]'と同様に最初のキーを取得し、最初のキー。 – gsamaras

1

なぜ、あなたのマトリックスとしてのリストのリストを使わないのでしょうか?それはあなたがそれを与えた順序を持っていました。

In [1]: matrix = [[i for i in range(4)] for _ in range(4)] 

In [2]: matrix 
Out[2]: [[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]] 

In [3]: matrix[0][0] 
Out[3]: 0 

In [4]: matrix[3][2] 
Out[4]: 2 
+0

ロナルド、私はそれを言及すべきだと思った、私はあなたのdownvoteに値するとは思わなかった。私はそう言われたので:http://stackoverflow.com/questions/37062078/storing-the-result-of-minhashあなたはいくつかのコードをドロップするためにupvoteを受ける必要があります。 :) – gsamaras

+0

それはあなたのアプリケーションでもっと重要なことに依存します。同じ順序でデータを常に繰り返し処理する能力が重要な場合は、リストのリストを提案します。最初のインデックスが数字でない場合は、辞書を使うのがよいでしょう。ところで、ここにはロナルドはありません:-) –

+0

それは数ですRolandl!情報をお寄せいただきありがとうございます。 – gsamaras

関連する問題