2017-10-15 8 views
0

Je travaille sur un exercice où nous ajoutons des matrices ensemble. Dans les dictionnaires donnés, le premier numéro de la clé est la ligne, le deuxième numéro de la clé est la colonne, et le troisième est la valeur de la coordonnée donnée:(Python débutant) en ajoutant des coordonnées à partir de deux dictionnaires

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} 

Quel code serait les ajouter ensemble de sorte que les coordonnées/clés qui sont égales entre elles se combinent et les autres viennent juste ensemble pour cette sortie:

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

Alors, quelle est la question :) – DonCziken

+0

Quel code serait les ajouter ensemble afin que les coordonnées/touches qui sont égales entre elles se combinent et les autres viennent juste ensemble? pour cette sortie: –

Répondre

1

vous pouvez changer l'objet dictionnaire à un objet compteur, ajoutez les compteurs, puis le retourner à être un dictionnaire comme ça. Cela fera ce que vous désirez.

>>> 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

Légèrement plus simple:

d = defaultdict(lambda: 0, matrix2) 
for pos, value in matrix1.items(): 
    d[pos] += value