矩阵作为字典;安全吗?
Matrix as a dictionary; is it safe?
我知道键的顺序是不能保证的,这没关系,但是值的顺序也不能保证是什么意思*?
例如,我将矩阵表示为字典,如下所示:
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 2 3 4 5
。它不会重新排序它们。 values()
的无序指的是如果您调用 signatures_dict.values()
值可能会以任何顺序出现。但值是行,而不是每行的元素。每一行都是一个列表,列表保持它们的顺序。
如果你想要一个维持秩序的字典,Python 也有:https://docs.python.org/2/library/collections.html#collections.OrderedDict
为什么不使用列表列表作为矩阵?它会按照您给它的任何命令执行;
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
我知道键的顺序是不能保证的,这没关系,但是值的顺序也不能保证是什么意思*?
例如,我将矩阵表示为字典,如下所示:
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 2 3 4 5
。它不会重新排序它们。 values()
的无序指的是如果您调用 signatures_dict.values()
值可能会以任何顺序出现。但值是行,而不是每行的元素。每一行都是一个列表,列表保持它们的顺序。
如果你想要一个维持秩序的字典,Python 也有:https://docs.python.org/2/library/collections.html#collections.OrderedDict
为什么不使用列表列表作为矩阵?它会按照您给它的任何命令执行;
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