一尘不染

Python -创建单独变量字典的更简单方法?

python

我希望能够以字符串的形式获取变量的名称,但是我不知道Python是否具有这么多的自省功能。就像是:

>>> print(my_var.__name__)
'my_var'

我想这样做是因为我想把一堆变量变成一个像这样的字典:

bar = True
foo = False
>>> my_dict = dict(bar=bar, foo=foo)
>>> print my_dict 
{'foo': False, 'bar': True}

但是我想要比这更自动的东西。

Python具有locals()vars(),所以我猜有办法。


阅读 399

收藏
2020-02-13

共2个答案

一尘不染

您要这样做吗?

dict( (name,eval(name)) for name in ['some','list','of','vars'] )

>>> some= 1
>>> list= 2
>>> of= 3
>>> vars= 4
>>> dict( (name,eval(name)) for name in ['some','list','of','vars'] )
{'list': 2, 'some': 1, 'vars': 4, 'of': 3}
2020-02-13
一尘不染

我已经很想这样做了。这种破解与rlotun的建议非常相似,但它是单行的,这对我很重要:

blah = 1
blah_name = [ k for k,v in locals().iteritems() if v is blah][0]

Python 3+

blah = 1
blah_name = [ k for k,v in locals().items() if v is blah][0]
2020-02-13