有没有更简单的方式创建独立变量的字典?
我想要把一个变量的名字变成字符串,但我不太确定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()
这两个函数,所以我想应该有办法做到。
27 个回答
63
我一直想做到这一点。这种方法和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]
131
正如unwind所说,这其实不是Python中常见的做法——在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'
47
你是在尝试做这个吗?
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}