2013-02-14 12 views
7

ich einen Namespace bekommen haben wie folgt aussehen:Iterate durch einen Namespace

Namespace (atq = None, bE = None, BEQ = None, b = Keine BQ = None, c = None, c = None, cJ = None, d = None, g = None, jR = [ 'xx', '015'], Lc None =, l = None)

Wie kann ich durchlaufen, so kann ich den "xx" -Wert für den "jR" Schlüssel finden und ersetzen?

+2

Was ist ein 'Namespace': klar sein, da vars() und __dict__ beide Rückkehr dicts, Sie durch sie als laufen können? – martineau

Antwort

8

Ich bin mir nicht sicher, was Sie im Voraus wissen, (der Name jR, oder nur, dass ein Name hat einen not None Wert), aber Sie können mit vars(), die ebenso wie __dict__ sollte ein dict sein, die die Namen versuchen, hat in Ihrem Namensraum als seine Schlüssel. Also, wenn Sie die Zeichenfolge haben 'jR' irgendwo,

vars()['jR'] = vars()['jR'][0] 

ebenfalls, können Sie die gleiche dict mit namespace.__dict__ statt vars()

Sie jR mit dem ersten Wert in ['xx','015'] als einziger Wert verlassen bekommen.

EDIT:

for k in namespace.__dict__: 
    if namespace.__dict__[k] is not None: 
     <<do something>>