Gegeben eine Liste von Variablennamen in Python, wie kann ich eine erstellen ein dictionary mit den Namen der Variablen als Schlüssel (zu den Variablen' Werte)?

Habe ich eine Liste von Variablen-Namen, wie diese:

['foo', 'bar', 'baz']

(Ich hatte ursprünglich gefragt, wie ich konvertiert eine Liste von Variablen. Greg Hewgill Antwort unten).

Wie konvertiere ich diese in ein dictionary, wo die Schlüssel sind die Namen der Variablen als strings, und die Werte sind die Werte der Variablen?

{'foo': foo, 'bar': bar, 'baz': baz}

Nun, bin ich wieder-die Frage, die ich kam mit:

d = {}
for name in list_of_variable_names:
    d[name] = eval(name)

Kann das verbessert werden?

Updateantwortet auf die Frage (in einem Kommentar), warum würde ich wollen, dies zu tun:

Oft finde ich mich mit dem % - operator, um Zeichenketten mit ein Wörterbuch der Namen und Werte zu interpolieren. Oft werden die Namen in der Zeichenfolge ist, nur die Namen der lokalen Variablen. So (mit der Antwort unten) ich kann so etwas tun:

message = '''Name: %(name)s
ZIP: %(zip)s

Dear %(name)s,
...''' % dict((x, locals()[x]) for x in ['name', 'zip'])

InformationsquelleAutor der Frage Daryl Spitzer | 2008-10-23

Schreibe einen Kommentar