矩阵作为字典;这样安全吗?

时间:2016-05-07 15:24:57

标签: python dictionary matrix key-value-store

我知道密钥的顺序并不能保证,这是正常的,但究竟是什么意思不能保证值的顺序 *

例如,我将矩阵表示为字典,如下所示:

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?

2 个答案:

答案 0 :(得分:1)

您将确保每行1 2 3 4 5。它不会重新排序。缺少values()的排序是指如果您调用signatures_dict.values(),则值可以按任何顺序出现。但值是行,而不是每行的元素。每行都是一个列表,列表保持其顺序。

如果你想要一个维护秩序的字典,那么Python也有:https://docs.python.org/2/library/collections.html#collections.OrderedDict

答案 1 :(得分: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