假设我有一些变量:
a, b, c, d, e = range(5)
我想保存,以便以后检查文件中,这些变量的值。一种方式我认为这样做是:
lookup = {
'a': a,
'b': b,
'c': c,
'd': d,
'e': e
}
正如你可能想象,有大量的变量,这有可能会乏味。而且,是的,我知道很多编辑们的功能,使这种复制粘贴操作的方便。但是我正在寻找的标准,“Python化”的动态构建的关键途径:值查找其中的关键是变量的名称和值是可变的,好了,值!
我想这个问题:
>>> {var.__name__: var for var in [a, b, c, d, e]}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <dictcomp>
AttributeError: 'int' object has no attribute '__name__'
我并不感到惊讶并没有工作,因为整型变量都是常数(我不知道来描述事物的确切方式):
>>> a = 1
>>> b = 1
>>> a is b
True
>>> b is a
True
>>> a == b
True
我怎么可能做到这一点?
import itertools
data = range(5)
result = {f"a{count}": value for count, value in zip(itertools.count(1), data)}
print(result)
输出:
{'a1': 0, 'a2': 1, 'a3': 2, 'a4': 3, 'a5': 4}
你可以从另一个方向解决它,并保存所有的局部变量,使用locals()
例如
import json
def foo(a=None, bb=None):
ccc='lots of c'; de=42
print( json.dumps( locals() ))
qazxsw POI生成qazxsw POI
(foo()
是串行化的字典的一种方式,并且仅将工作进行简单的变量可以被转换为JSON)
另一种方式是拿到一些变量会
{"a": null, "bb": null, "ccc": "lots of c", "de": 42}
下面是使用json.dumps
模块print( json.dumps( dict( a=a, b=b, c=c) ))
另一种方式:
ascii_lowercase