Matrix als Wörterbuch; ist es sicher?
Ich weiß, dass die Reihenfolge der Schlüssel nicht garantiert ist und das ist okay, aber was genau bedeutet das, dass die Reihenfolge der Werte auch nicht garantiert ist * ?
Zum Beispiel vertrete ich eine Matrix als Wörterbuch, wie folgt:
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
Sind die Spalten meiner Matrix richtig aufgebaut? Sagen wir, ich habe 3 Zeilen und bei dieser signatures_dict[i] = row
, row
hat immer 1, 2, 3, 4, 5. Was wird signatures_dict
sein?
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Oder so ähnlich
1 2 3 4 5 1 4 3 2 5 5 1 3 4 2
? Ich mache mir Sorgen um plattformübergreifende Unterstützung.
In meiner Anwendung sind die Zeilen Wörter und die Spalten Dokumente, so kann ich sagen, dass die erste Spalte ist das erste Dokument?
* Sind die Reihenfolge der Schlüssel () und Werte () im Python-Wörterbuch garantiert gleich zu sein?
2 Solutions collect form web for “Matrix als Wörterbuch; ist es sicher?”
Sie haben garantiert 1 2 3 4 5
in jeder Zeile. Sie werden sie nicht neu anordnen. Die fehlende Reihenfolge der values()
bezieht sich auf die Tatsache, dass, wenn Sie signatures_dict.values()
anrufen, die Werte in beliebiger Reihenfolge kommen könnten. Aber die Werte sind die Zeilen, nicht die Elemente jeder Zeile. Jede Zeile ist eine Liste, und Listen behalten ihre Reihenfolge bei.
Wenn du einen Dict wünschst, der Ordnung beibehält, hat Python das auch: https://docs.python.org/2/library/collections.html#collections.OrderedDict
Warum nicht eine Liste von Listen als Matrix verwenden? Es würde alles haben, was du dir gegeben hast.
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