Wie man alle Werte in einem Wörterbuch zurücksetzt

{"green": 0, "y3": 1, "m@tt": 0, "newaccount": 0, "egg": 0, "results": 0, "dan": 0, "Lewis": 0, "NewAccount2": 0, "testyear3": 1, "testyear6": 0, "NewAccount1": 0, "testyear4": 0, "testyear5": 0, "Matt1": 0, "swag": 1, "lewis": 1, "matt": 1, "notin": 0} 

Dies ist das Wörterbuch, das als 'finaldict' definiert ist. Was ich tun möchte, ist, ALLE Werte zu ändern, egal was sie auf 0 genannt werden. Denken Sie jedoch daran, dass neue Kontonamen an jedem beliebigen Punkt als "Schlüssel" hinzugefügt werden, damit ich nicht manuell tun kann "completedict [green] = 0 "," Fertiggestellt [lewis] = 0 ", etc etc.

Gibt es irgendeinen Weg, um Python ändern ALLE Werte innerhalb eines Wörterbuches zurück zu 0?

EDIT: Leider will ich kein neues Wörterbuch erstellen – ich möchte es als 'finaldict' bezeichnen, da das Programm das Wörterbuch, das als 'completedict' definiert ist, an vielen Punkten des Programms verwenden muss.

  • Zugriffsfunktionen im Wörterbuch Teil 2
  • Schnelle Möglichkeit, Wörterbuch in Python zu kopieren
  • Python Tulpe Key für Dict Partial Lookup
  • Rekursiver Zugang zu Wörterbuch und Modifikation
  • Übersetzen Sie eine Tabelle zu einem hierarchischen Wörterbuch?
  • Überschreiben Sie die {...} Notation, so bekomme ich ein OrderedDict () anstelle eines dict ()?
  • Multiprocessing in Python: Wie man eine Loop über "apply_async" als "map_async" mit einer Callback-Funktion implementiert
  • Python umgekehrt / invertieren
  • 5 Solutions collect form web for “Wie man alle Werte in einem Wörterbuch zurücksetzt”

    Eine weitere Möglichkeit ist die Verwendung von .fromkeys() :

    Fromkeys (seq [, value])

    Erstellen Sie ein neues Wörterbuch mit Schlüssel aus seq und Werte auf Wert gesetzt.

     d = d.fromkeys(d, 0) 

    Demo:

     >>> d = {"green": 0, "y3": 1, "m@tt": 0, "newaccount": 0, "egg": 0, "results": 0, "dan": 0, "Lewis": 0, "NewAccount2": 0, "testyear3": 1, "testyear6": 0, "NewAccount1": 0, "testyear4": 0, "testyear5": 0, "Matt1": 0, "swag": 1, "lewis": 1, "matt": 1, "notin": 0} >>> d.fromkeys(d, 0) {'newaccount': 0, 'swag': 0, 'notin': 0, 'NewAccount1': 0, 'Matt1': 0, 'testyear4': 0, 'Lewis': 0, 'dan': 0, 'matt': 0, 'results': 0, 'm@tt': 0, 'green': 0, 'testyear5': 0, 'lewis': 0, 'NewAccount2': 0, 'y3': 0, 'testyear3': 0, 'egg': 0, 'testyear6': 0} 

    Sicher, es ist ziemlich einfach:

     newDict = {key: 0 for key in completeddict} 

    Das ist Wörterbuchverständnis und entspricht:

     newDict = {} for key in completeddict: newDict[key] = 0 

    Diese dict Verständnisse wurden in v2.7 eingeführt, so ältere Vesionen müssen die erweiterte Form verwenden.

    Ein Formular, das in praktisch jeder Python-Version arbeiten wird, ist nur der dict Konstruktor mit einem Listenverständnis oder Generator zu verwenden:

     >>> d={"green": 10, "y3": 11, "m@tt": 12, "newaccount": 22, "egg": 55, "results": 0, "dan": 0, "Lewis": 0, "NewAccount2": 0, "testyear3": 1, "testyear6": 0, "NewAccount1": 0, "testyear4": 0, "testyear5": 0, "Matt1": 0, "swag": 1, "lewis": 1, "matt": 1, "notin": 0} >>> d=dict((k, 0) for k in d) >>> d {'newaccount': 0, 'swag': 0, 'notin': 0, 'NewAccount1': 0, 'Matt1': 0, 'testyear4': 0, 'Lewis': 0, 'dan': 0, 'matt': 0, 'results': 0, 'm@tt': 0, 'green': 0, 'testyear5': 0, 'lewis': 0, 'NewAccount2': 0, 'y3': 0, 'testyear3': 0, 'egg': 0, 'testyear6': 0} 

    Was können Sie dann mit einem veränderlichen Argument oder irgendeine Form von kündbaren verwenden:

     >>> d=dict((k, list()) for k in d) 

    Jetzt ist jedes Element von d eine neue Liste (oder was auch immer veränderlich oder nicht Sie möchten, dass der Wert Teil des Tupels zu sein).

    Wenn du kein neues Dict erstellen willst, scheint es wie alles, was du brauchst, ist eine einfache Zwei-Zeilen-Schleife, es sei denn, ich vermisse etwas:

     for key in completeddict.keys(): completeddict[key] = 0 

    Hinzufügen zu alecxe asnwer,

    Dein Wörterbuch ist,

     completeddict = {"green": 0, "y3": 1, "m@tt": 0, "newaccount": 0, "egg": 0, "results": 0, "dan": 0, "Lewis": 0, "NewAccount2": 0, "testyear3": 1, "testyear6": 0, "NewAccount1": 0, "testyear4": 0, "testyear5": 0, "Matt1": 0, "swag": 1, "lewis": 1, "matt": 1, "notin": 0} 

    Jetzt kann dieses Wörterbuch mit Standardwerten aktualisiert werden,

     completeddict.update({}.fromkeys(completeddict,0) 

    Erledigt. Ihre Fertigstellung wird mit dem Standardwert für alle Schlüssel aktualisiert.

    Ex:

     a = {'x':2,'y':4} print id(a) print a a.update({}.fromkeys(a,0)) print id(a) print a 

    Ausgabe:

     42612608 <--- id of dict 'a' {'y': 4, 'x': 2} <--- dict 'a' before updation 42612608 <--- id of dict 'a' {'y': 0, 'x': 0} <--- dict 'a' after updation 

    Es kann beobachtet werden, dass id des Wörterbuches selben, auch wenn es mit Standardwerten aktualisiert wird.

    Python ist die beste Programmiersprache der Welt.