矩阵
是具有相同长度的列表列表。我要返回表格的字典
{i:(l1[i],l2[i],...,lm[i])}
其中键i与元组匹配的元素 从每个清单。 说
matrix=[[1,2,3,4],[9,8,7,6],[4,8,2,6]]
所以行:
>>> dict([(i,tuple(matrix[k][i] for k in xrange(len(matrix)))) for i in xrange(len(matrix[0]))])
完成工作并输出:
{0: (1, 9, 4), 1: (2, 8, 8), 2: (3, 7, 2), 3: (4, 6, 6)}
但如果矩阵为空则失败:matrix=[]
。输出应为:{}
我该如何处理?
答案 0 :(得分:5)
相反如何:
>>> matrix = [[1,2,3,4],[9,8,7,6],[4,8,2,6]]
>>> dict(enumerate(zip(*matrix)))
{0: (1, 5, 4), 3: (4, 8, 6), 2: (3, 7, 2), 1: (2, 6, 8)}
>>> matrix = []
>>> dict(enumerate(zip(*matrix)))
{}
答案 1 :(得分:4)
尝试更改部分" len(矩阵[0])" 如果矩阵为空,这将尝试查找不存在的索引。
取而代之的是
len(matrix [0])if matrix else 0
答案 2 :(得分:0)
如果你想要一个简单的解决方案(而不是知道你的问题有什么问题),我建议你使用列表而不是字典。看作矩阵在大小和关键方面是相当静态的。
这可以通过zip(*matrix)
>>> matrix = [[1,2,3,4],[9,8,7,6],[4,8,2,6]]
>>> dict_ = dict(enumerate(zip(*matrix)))
>>> list_ = zip(*matrix)
>>> for key_ in dict_:
... print dict_[key_] == list_[key_]
...
True
True
True
True