提取变量名称为字符串

时间:2019-01-17 21:42:52

标签: python-2.7

对于任意长度的一个或多个列表,如何将列表变量名称提取为字符串?

让arr_1,arr_2,...,arr_n是类似数组的对象(例如列表)。令iterlist = [arr1,arr2,...,arr_n]。我想提取并存储iterlist的每个元素的变量名称作为字符串。我可以对标量值变量执行此操作,但不能对数组/列表执行此操作。

情况1-变量保存整数(有效):

test_var = 10
var_name = [m for m,n in locals().iteritems() if n == test_var][0]
print var_name 
--> test_var

情况2-变量包含类似数组的对象:

test = [10, 20, 30, 40]
test_name = [k for k,v in locals().iteritems() if v == test][0]    

Traceback (most recent call last):   
File "...Continuum\Anaconda2\lib\site- 
packages\IPython\core\interactiveshell.py", line 2881, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-7-75ec0dff3986>", line 1, in <module>
test_name = [k for k,v in locals().iteritems() if v == test][0]
RuntimeError: dictionary changed size during iteration

案例3-列表列表:

var1 = 10
var2 = 15
iterlist = [var1, var2]
var_names = [k for k,v in locals().iteritems() for y in iterlist if v==y][0]
RuntimeError: dictionary changed size during iteration

在两种情况下,我得到相同的“迭代过程中字典更改的大小”数组。 我知道在Python中,变量只是对象的名称映射,(对我而言)这意味着不存在变量的规范名称(我认为它们对类有用)。我的方法是反向搜索变量名。 “ iteritems”返​​回范围内所有变量及其值的列表。我知道您无法在字典中进行迭代时添加/删除字典中的元素。但是我无法准确地确定发生在何处/何时发生(不足够了解locals()和iteritems()的属性)。

我想念什么?!

0 个答案:

没有答案
相关问题