Dada uma lista de nomes de variáveis em Python, como faço para criar um dicionário com os nomes de variáveis como chaves (para os valores das variáveis)?

Eu tenho uma lista de nomes de variáveis, assim:

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

(Inicialmente, perguntei como converto uma lista de variáveis. Veja a resposta de Greg Hewgill abaixo.)

Como faço para converter isso em um dicionário onde as chaves são os nomes das variáveis (como seqüências de caracteres) e os valores são os valores das variáveis?

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

Agora que estou re-perguntando a pergunta, eu vim com:

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

Isso pode ser melhorado?

Atualizar, respondendo à pergunta (em um comentário) de por que eu gostaria de fazer isso:

Costumo encontrar-me usando o operador% para seqüências de caracteres com um dicionário de nomes e valores para interpolar. Geralmente, os nomes na cadeia de caracteres são apenas os nomes das variáveis locais. Então (com a resposta abaixo) eu posso fazer algo assim:

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

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

questionAnswers(4)

yourAnswerToTheQuestion