[Python-de] Variable aus Variable erstellen

Stefan Schwarzer sschwarzer at sschwarzer.net
Don Dez 23 12:45:58 CET 2004


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