2016-10-02 3 views
1

Sagen wir, ich hatte diese beiden Wörterbücher enthalten, die beide ähnliche Tasten zueinander enthalten:Identifizierung und Werte von dict auf einen anderen dict Zugabe, während sowohl die ähnliche Tasten

d_1 = {'a': 3, 'b': 4, 'c': 1} 

d_2 = {'a': 5, 'b': 6, 'c': 9, 'd': 7} 

Nun nehmen, lassen Sie uns sagen, ich will die Werte von d_1 und addieren sie zu den entsprechenden Werten von d_2. Wie würde ich die Werte von d_1 's a Schlüssel zu dem entsprechenden Schlüssel in d_2 ohne individuelle Angabe d_2['a'] += d_1['a'] für jeden Schlüssel hinzufügen? Wie könnte ich eine Funktion schreiben, die zwei Dicts braucht, ihre Schlüssel vergleicht und diese Werte zu den identischen existierenden Schlüsselwerten in einem anderen dict hinzufügt?

Zum Beispiel, wenn ich eine Klasse mit dem Namen player hätte und ein Attribut von skills, das mehrere Fähigkeiten und ihre Werte enthält, z. strength: 10 oder defense: 8 usw. Nun, wenn das player auf ein Rüstungsset oder was auch immer gestoßen wäre, das bestimmte Fähigkeiten verbessern würde, wie könnte ich dieses Buff-Wörterbuch nehmen, sehen, welche Schlüssel es mit dem player 's skills Attribut gemein hat, und füge die entsprechenden Werte hinzu?

+0

Ich denke, Schlüssel in D_1 iterieren und relevante Werte in D_2 Aktualisierung (wie Sie vorschlagen) ist der beste Weg; Gibt es einen Grund, warum Sie diesen Ansatz nicht mögen? – Akavall

Antwort

3

Für jeden Schlüssel in d_2, überprüfen Sie, ob sie in d_1, wenn ja, addieren sie.

for key in d_2: if key in d_1: d_2[key] += d_1[key]

Es scheint, dass Sie ein Spiel zu bauen wollen, dann können Sie nicht mit dem Spieler Attribut zu verwirren wollen. addieren sie und setzen das Ergebnis zu einem neuen Diktat wäre besser. Außerdem kannst du mehr als zwei Diktate hinzufügen, da du mehr als einen Stärkungszauber haben kannst.

for key in player: outcome[key] = 0 for buff in buffs: if key in buff: outcome[key] += buff[key] outcome[key] += player[key]

Verwandte Themen