
Guten Morgen Liste, ist es eigentlich möglich aus dem Inhalt einer String-Variablen eine Variable mit dessen Namen zu erstellen? Also, z.B.: var1 = 'network' # Code und dann soll es eine Variable namens 'network' geben... vielleicht geht's ja, im Handbuch hab ich nix gefunden. Gruss und frohe Weihnachten Sebastian _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Sebastian Stolz wrote:
ist es eigentlich möglich aus dem Inhalt einer String-Variablen eine Variable mit dessen Namen zu erstellen? Also, z.B.:
var1 = 'network' # Code und dann soll es eine Variable namens 'network' geben...
Sowas geht schon, aber welchen Wert sollte sie in deinem Beispiel denn haben? Aber wenn du uns erzählst was du vorhast, können wir besser antworten. Gruß, Achim _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Hallo Achim, Achim Domma (Procoders) schrieb:
Sowas geht schon, aber welchen Wert sollte sie in deinem Beispiel denn haben? Aber wenn du uns erzählst was du vorhast, können wir besser antworten.
also: Ich bekomme eine Python Liste mit Feldnamen, aus jedem Feldnamen möchte ich eine Variable (warscheinlich ein Dictionary) machen. z.B: Feldnamen = ['KISMET','NETWORK] # jetzt der Code + Feldnamen.lower() kismet[version] = 5.02 kismet[user] = 'root' network[ssid] = 'test123' network[wep] = 0 noch ein kleines Problem: die Schlüssel der Dictionaries kommen auch aus einer Liste :-) Ich hoffe man kann's nachvollziehen... _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Sebastian Stolz wrote:
Feldnamen = ['KISMET','NETWORK] # jetzt der Code + Feldnamen.lower() kismet[version] = 5.02 kismet[user] = 'root' network[ssid] = 'test123' network[wep] = 0
Was spricht gegen sowas: fields={} fields['kismet']={} fields['kismet']['version']=5.02 fields['network']={} fields['network']['ssid']='test123' ... Im ganz konkreten Fall gibt's auch da sicher noch was besseres, aber dazu müßte (ich zumindest) die genauen Daten sehen. Aber wie Andreas schon schrieb, riecht das alles eher nach einem Designfehler. Gruß, Achim _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Hallo Sebastian, On Thursday 23 December 2004 11:44, Sebastian Stolz wrote:
also: Ich bekomme eine Python Liste mit Feldnamen, aus jedem Feldnamen möchte ich eine Variable (warscheinlich ein Dictionary) machen. z.B:
Feldnamen = ['KISMET','NETWORK] # jetzt der Code + Feldnamen.lower() kismet[version] = 5.02 kismet[user] = 'root' network[ssid] = 'test123' network[wep] = 0
noch ein kleines Problem: die Schlüssel der Dictionaries kommen auch aus einer Liste :-)
um die Namen im aktuellen Modul zu erzeugen, kannst du globals() verwenden:
Feldnamen = ['KISMET', 'NETWORK'] lowercase_name = Feldnamen[1].lower() globals()[lowercase_name] = {} network {}
Achte darauf, jedes Mal ein neues Dictionary zu erzeugen, also NICHT:
empty_dict = {} globals()['kismet'] = empty_dict globals()['network'] = empty_dict
Wenn allerdings die Feldnamen nicht nur "einfach so" in einer Liste auftauchen, sondern Gemeinsamkeiten haben, könntest du die Attribute auch in einem Dictionary oder in einer Klasseninstanz unterbringen:
class Container: ... pass ... configuration = Container() setattr(configuration, lowercase_name, {}) configuration.network {}
Wenn die Werte, wie ich mir vorstellen könnte, Konfigurationsdaten sind, schau dir mal das Modul ConfigParser an. Viele Grüße Stefan _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Danke für die Antworten, die Dictionaries sollten gehen: config[network.lower()] da wird ja die Ausgabe von network.lower() als Schlüssel benutzt. ...das hatte ich gesucht. Vielen Dank! Gruss, frohes Fest und guten Rutsch Sebastian _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

--On Donnerstag, 23. Dezember 2004 11:16 Uhr +0100 Sebastian Stolz <sebastian.stolz@arbeitskammer.de> wrote:
Guten Morgen Liste,
ist es eigentlich möglich aus dem Inhalt einer String-Variablen eine Variable mit dessen Namen zu erstellen? Also, z.B.:
var1 = 'network' # Code und dann soll es eine Variable namens 'network' geben...
Schau Dir mal eval() oder exec(). Aber generell halte ich diese Idee -ohne zu wissen was Du vor hast - für broken-by-design. -aj _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (4)
-
Achim Domma (Procoders)
-
Andreas Jung
-
Sebastian Stolz
-
Stefan Schwarzer