Вы не можете сделать это без записи хотя бы имен переменных, но сокращение можно написать так:
>>> foo = 1
>>> bar = 2
>>> d = dict(((k, eval(k)) for k in ('foo', 'bar')))
>>> d
{'foo': 1, 'bar': 2}
или как функция:
def createDict(*args):
return dict(((k, eval(k)) for k in args))
>>> createDict('foo','bar')
{'foo': 1, 'bar': 2}
Вы также можете использовать globals()
вместо eval()
:
>>> dict(((k, globals()[k]) for k in ('foo', 'bar')))