2017-04-07 1 views
0

Ich habe ein Wörterbuch, das ich in einem Skript generiert:Python Wörterbuch Werte von separaten Skript Hinzufügen läuft

dict1 = {'a': 1, 'b': 2, 'c':3} 

Das Skript, das Wörterbuch zu erzeugen, wird oft über verschiedene Dateien ausgeführt werden, mehrere Wörterbücher zu erzeugen, die jeweils in ihrem eigenes Drehbuch:

dict2 = {'a': 5, 'b': 3, 'c':2} 
dict3 = {'a': 2, 'b': 1, 'c':0} 

Mein Plan diese in eine Datei einzeln, dann fügen sie Werte mit dem gleichen Schlüssel (zB einen Eintrag für ‚a‘: 8) hinzuzufügen, war einmal die Datei angehängt mit allen Wörterbuch wurde.

Gibt es eine Möglichkeit, die Werte der Wörterbücher hinzuzufügen, wenn sie der Datei hinzugefügt werden? Oder eine andere Möglichkeit, dies zu tun, die dazu führt, dass die Werte hinzugefügt werden, wenn jedes Skript abgeschlossen ist?

Edit: Ich bin neu in der Codierung, bitte erklären Sie langsam und klar, wenn Sie können. :)

+0

Was ist falsch daran, nur ein einziges 'dict0' zu haben und beispielsweise' dict0 ['a'] + = some_value' für alle Dateien aufzurufen? – Julien

+0

Vielleicht [this] (https://docs.python.org/3/library/shelve.html) kann helfen? –

+0

Werden diese Dateien parallel ausgeführt? Gibt es ein Master-Programm, das sie ausführt? Sie könnten Daten in eine einzige Datei schreiben, wenn dieses Programm nur seriell ausgeführt wird, oder auf andere Dateien (tempfile.mkstemp kann dabei helfen). Ein schwerer Lift, aber gut in Ihrer Umgebung ist 'couchdb' oder' mongodb' mit Map-Reduce-Jobs, um die aktuellen Werte zu verfolgen. – tdelaney

Antwort

0

Ich wollte neu erstellte Wörterbuchwerte zu einer bereits vorhandenen Datei hinzufügen.

Zum Beispiel wäre Diktat 1 bereits in der Datei. Ich tat dies mit

with open(file.txt, "w") as f: 
     for i in dict.keys(): 
      f.write(i + " " + str(dict[i]) + "\n") 

zu dict 2, dict 3, usw. in die Datei hinzufügen: ich die datei.txt nahm die dict1 hatte und wieder schrieb sie in einem Wörterbuch mit

for line in f: 
      values = line.split(sep) 
      dict[values[0]] = int(values[1]) 

Dann fügte ich die zwei Wörterbücher innerhalb des Programms hinzu und schrieb das neue Wörterbuch wieder in die Datei zurück.

Wahrscheinlich nicht die eleganteste Antwort, aber es funktioniert!

Verwandte Themen