2017-10-15 16 views
0

私は行列を一緒に追加する練習に取り組んでいます。与えられた辞書で、キー内の最初の数字は行である、キーの2番目の数は、列であり、第3の数は、与えられた座標の値である:(Python Beginner)2つの辞書から座標を一緒に追加する

それらを一緒に追加するどのコード
matrix1={(2, 2): 5, (1, 2): 4, (0, 1): 2, (0, 0): 1, (1, 1): 3, (2, 3): 6} 
matrix2={(0, 1): 1, (0, 2): 2, (1, 2): 3, (1, 3): 4, (2, 0): 6, (2, 3): -6} 

そのように互いに等しい座標/キーを組み合わせて、他の人はちょうどこの出力のために一緒に来る:

matrix1+2={(0, 0): 1, (0, 1): 3, (0, 2): 2, (1, 1): 3, (1, 2): 7, (1, 3): 4, (2, 0): 6, (2, 2): 5, (2, 3): 0} 
+1

そこで質問は何です:) – DonCziken

+0

組み合わせ、互いに等しい座標/キーと他の人がちょうど一緒に来るようにそれらを一緒に追加する何のコード?この出力の場合: –

答えて

1

あなたは、カウンターオブジェクトに辞書オブジェクトを切り替えるカウンタを追加し、その後にそれを返すことができますそのような辞書です。これはあなたが望むことをするでしょう。

>>> from collections import Counter 
>>> matrix1 = Counter(matrix1) 
>>> matrix2 = Counter(matrix2) 
>>> matrix1.update(matrix2) 
Counter({(1, 2): 7, (2, 0): 6, (2, 2): 5, (1, 3): 4, (0, 1): 3, (1, 1): 3, (0, 2): 2, (0, 0): 1, (2, 3): 0}) 
>>> matrix = dict(matrix1) 
1

少し単純:

d = defaultdict(lambda: 0, matrix2) 
for pos, value in matrix1.items(): 
    d[pos] += value 
関連する問題