我使用Python来学习线性代数和我有两个字典:的Python:字典乘法
v = {1: 1, 2: 8, 3: 0}
和
M = {(1, 2): 2, (3, 1): 1, (3, 3): 7, (2, 1): -1}
,我想打一个字典,将所有的元素,它的键在v中与M中的元组的第一部分是相同的。我想在这里作为这两个字典的答案的例子。 (我会告诉我想要做的计算)
newDict = {1: 1*M[(1, 2)], 2: 8*M[(2, 1)], 3: 0*M[(3, 1)]+0*M[(3, 3)]
这是一样的:
newDict = {1: 1*2, 2: 8*-1, 3: 0*1+3*7}
,所以我得到一个最终的字典形式
newDict = {1:2, 2:-8, 3:0}
,你可以请看,我需要与字典v中相同的密钥。最近的我得到的是:
>>> [v[k]*M[r] for k in v for r in M if k == r[0]]
[2, -8]
我在哪里至少有正确的答案,但我无法得到这个工作。我不知道该从哪里出发,或者我是否处于正确的轨道。对不起,如果我的解释可能缺乏
它必须是'3:0 * 1 + 0 * 7'? –
你正在用这种方法增加所有的东西,对吧?你不是在说“把乘法加在一起”的部分。 – Jblasco
也许你应该开始解释,你正在试图写一个稀疏矩阵和一个稀疏矢量的乘法... – hivert