Heim > Backend-Entwicklung > Python-Tutorial > Addition und XOR-Vergleich zusammengeführter Werte von Wörterbüchern in Python

Addition und XOR-Vergleich zusammengeführter Werte von Wörterbüchern in Python

高洛峰
Freigeben: 2017-03-03 15:18:26
Original
1744 Leute haben es durchsucht

Wörterbuch-zusammengeführte Werte hinzufügen

Beim Zusammenfassen von Spieldaten werden jeden Tag einige Daten in Wörterbüchern gespeichert. Wenn ich mehrere Tage zusammenfassen möchte, müssen Sie Wörterbücher zusammenführen.
Wenn die Schlüssel gleich sind, werden ihre Werte addiert.
Sie können die Aktualisierungsmethode nicht verwenden, da bei Verwendung der Aktualisierungsmethode die Werte desselben Schlüssels überschrieben statt hinzugefügt werden.
Tausend Worte sind mehr als einen Meter wert.

def union_dict(*objs): 
  _keys = set(sum([obj.keys() for obj in objs],[])) 
  _total = {} 
  for _key in _keys: 
    _total[_key] = sum([obj.get(_key,0) for obj in objs]) 
  return _total 
 
obj1 = {'a':1,'b':2,'c':3} 
obj2 = {'a':1,'b':3,'d':4} 
print union_dict(obj1,obj2)
Nach dem Login kopieren


Ausgabe

{'a': 2, 'c': 3, 'b': 5, 'd': 4}
Nach dem Login kopieren

sum([obj.keys() for obj in objs],[]) ist möglicherweise nicht leicht zu verstehen.
Tatsächlich verfügt die Funktion sum() auch über „wenig bekannte Parameter“, nämlich den zweiten Parameter, den Startparameter, der standardmäßig 0 ist.
Und es kann nicht nur vom Typ int sein, sondern auch andere Dinge, die den +-Operator unterstützen, wie zum Beispiel [].
Damit kann das zweistufige Array auf eine Ebene reduziert werden.
Zum Beispiel

>>sum([[1,2,3],[4,5]],[])
[1,2,3,4,5]
Nach dem Login kopieren

Wörterbuch diff("XOR")
Im Spiel habe ich Rucksackänderungen im Artikelsystem überwachen und aufzeichnen möchten. (Das Ergebnis von „XOR“ ist, dass dieselben eliminiert werden und die anderen zurückbleiben, also geändert werden.)
Nehmen Sie an, dass die Aufbewahrungsstruktur des Rucksacks so ist.
ist ein Wörterbuch, {Artikel-ID: Menge}.
Kopieren und speichern Sie beim Initialisieren der Rucksackklasse die Rucksackartikelinformationen in einer Oldbag-Variablen, nachdem Sie einige Artikelvorgänge ausgeführt haben (z. B. Artikel verwenden, Artikelbelohnungen erhalten usw.), wenn Sie die Methode save () zum Speichern aufrufen Redis, das neue Vergleichen Sie die Unterschiede zwischen dem Bag-Wörterbuch und dem Oldbag-Wörterbuch, um die Änderungen zu erhalten.
Tausend Worte sind mehr als einen Meter wert.

def symmetric_difference(_oldobj,_newobj): 
  _oldkeys = _oldobj.keys() 
  _newkeys = _newobj.keys() 
  _diff = {} 
  for _key in set(_oldkeys + _newkeys): 
    _val = _newobj.get(_key,0) - _oldobj.get(_key,0) 
    if _val: 
      _diff[_key] = _val  
  return _diff  
 
oldobj = {'a':1,'b':2,'c':3} 
newobj = {'a':1,'b':3,'d':4} 
print symmetric_difference(oldobj,newobj)
Nach dem Login kopieren

Ausgabe

{'b': 1, 'd': 4,'c': -3}
Nach dem Login kopieren

darstellt Der Spieler hat 1 „B“-Gegenstand, 4 „D“-Gegenstände gewonnen und 3 „C“-Gegenstände verloren.

Weitere Artikel zum Addieren und XOR-Vergleich zusammengeführter Werte in Wörterbüchern in Python finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage