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

2024-04-19 21:07:24 发布

您现在位置: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(),所以我想有一种方法。


Tags: 字符串name功能名称falsetrue字典foo
3条回答

正如unwind所说,这并不是在Python中真正要做的事情——变量实际上是到对象的名称映射。

但是,有一种方法可以尝试:

 >>> a = 1
 >>> for k, v in list(locals().iteritems()):
         if v is a:
             a_as_str = k
 >>> a_as_str
 a
 >>> type(a_as_str)
 'str'

我很想这么做。这次黑客攻击与rlotun的建议非常相似,但它是一条单行线,这对我很重要:

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

Python3+

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

你想这么做吗?

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}

相关问题 更多 >