2016-10-10 2 views
0

ich ein Objekt haben, die einen Namen hat und eine unbestimmte Menge von Parametern (die auch mit einem Namen ein Objekt ist und einen Wert)Python mehrere Objekte in einem Wörterbuch drehen

Ich bin ziemlich neu in Python also das bekommt ein bisschen über meinen Kopf Ich möchte alle Parameter bekommen und sie in ein Wörterbuch einfügen. Mein Code sieht so aus:

Aber Parameter .__ dict__ funktioniert nicht wie ich hier dachte. Irgendwelche Ideen, wie ich es zum Laufen bringen kann?

EDIT: Dank arbeitete sie von data.update mit (VARs (Parameter))

+5

'Parameter geben .__ dict__' das Objektverzeichnis Attribute zurückgibt. Sie tun nichts damit, Sie ignorieren das Ausdrucksergebnis. Wolltest du es in 'data.update (Parameter .__ dict __)' verwenden? Beachten Sie, dass die Funktion 'vars()' besser lesbar und übersichtlicher ist: 'data.update (vars (Parameter))'. –

+0

Meinten Sie 'data.update (parameter .__ dict __)'? – TigerhawkT3

+0

Habe es in varse geändert und jetzt funktioniert es, aber ich würde gerne ein Wörterbuch wie {"ParamOne": "ValueOne", "ParamTwo": "ValueTwo"} bekommen {'name': ' ParamOne ',' Wert ':' ValueOne '} {' Name ':' ParamTwo ',' Wert ':' ValueTwo '} Ich möchte nicht, dass jeder Parameter so aufgerufen wird, damit ich nicht einfach ParamOne gehen kann = "ValueOne" – Hatox

Antwort

0

Mit an Ihrer Ausgabe suchen es, wie Sie Klassenstruktur aussieht, ist so etwas wie dieses

class class1(object): 
    def __init__(self, p1, p2): 
     self.name = p1 
     self.value = p2 

class class2(object): 
    def __init__(self): 
     self.parameters = [class1("param1", "value1"), class1("param2", "value2")] 


obj = class2() 

data = {} 

Wenn wir also tun

for parameter in obj.parameters: 
    print(parameter.__dict__) 

Wir bekommen Ausgabe

{'value': 'value1', 'name': 'param1'} 
{'value': 'value2', 'name': 'param2'} 

So ist die gewünschte Ausgabe erhalten Sie so etwas wie

for parameter in obj.parameters: 
    data[parameter.__dict__['name']] = parameter.__dict__['value'] 

print(data) 

zu tun haben, die Ihre gewünschte Ausgabe

{'param2': 'value2', 'param1': 'value1'} 
Verwandte Themen