2016-07-26 5 views
0

Ich brauche das "Ergebnis" in dict-Objekt, ich bin Schleifen und bekomme Schlüssel und Werte im folgenden Format, das ich in der Variablen "opp" definiert habe.Speichern von Satz von formatierten benutzerdefinierten String zu Wörterbuch mit Python

Was ich brauche ist, dass ich die Daten (d. H. Von opp) zu einem Diktat speichern möchte. Wie kann ich das machen?

Hier ist mein Code:

for service, svc_limits in result.items(): 
    for limit_name, limit in svc_limits.items(): 
     for warn in limit.get_warnings(): 

      opp = ("'{service}/'{limit_name}'': '[{u}]'".format(
           service=service,limit_name=limit_name,u=str(warn)) 
       ) 

Meine Beispielausgabe:

{"contact": {"permanentnumber":"sample123","tempnum":"jki345"}} 

Von dieser, ich habe Ausgabe als

contact/permanentnumber:sample123 
contact/tempnum:jki345 

und es als eine separate Zeichenfolge erhalten Datentyp.

Ich muss diese Reihe von Zeichenfolgen im Wörterbuchformat speichern, um in die YAML-Datei mit Dump zu schreiben, aber es funktioniert nicht. Nur eine Gruppe von Werten wird in die Datei geschrieben. Ich muss diese beiden Werte in der neuen Datei speichern.

Es gibt mir nur Set dtatype, aber was ich brauche hier ist Wörterbuch.

set(["'Contact/'permanentnumber'': '[4]'"]) <type 'set'> 
set(["'Contact/'temporarynum' ': '[4]'"]) <type 'set'> 

Wie kann ich damit umgehen?

Antwort

0

In Python, wenn a eine Variable ist, und Sie tun:

x = {a} 

dann x wird ein Satz mit einem Element sein. Wenn Sie x ein dict sein wollen, dann tun:

x = {'somekey': a} 

oder:

x = dict(somekey=a) 

was zu verwenden, wie somekey hängt von Ihrer Anwendung, aber es könnte sinnvoll sein, nicht {"contact": {"permanentnumber":"sample123","tempnum":"jki345"}} zu konvertieren:

contact/permanentnumber: sample123 
contact/tempnum: jki345 

von

import sys 
import ruamel.yaml 

result = {"contact": {"permanentnumber":"sample123","tempnum":"jki345"}} 

opp = {} 

for service, svc_limits in result.items(): 
    for limit_name, limit in svc_limits.items(): 
      opp["{service}/{limit_name}".format(service=service, limit_name=limit_name)] = \ 
       "{u!s}".format(u=limit) 

ruamel.yaml.round_trip_dump(opp, sys.stdout) 
tun

die Ihnen die YAML Ausgang gibt:

contact/tempnum: jki345 
contact/permanentnumber: sample123 
+0

Dank Anthon ... – user4223185

Verwandte Themen