Python 如何将列表变量名转换为字符串
我认为这应该很简单,但我不知道怎么做。我有一个列表变量的元组:Python 如何将列表变量名转换为字符串,python,variables,Python,Variables,我认为这应该很简单,但我不知道怎么做。我有一个列表变量的元组: A = (a,b,c) 在哪里 我想制作一个元组或列表,其中是变量的名称。所以 A_names = ('a','b','c') 我怎么能这样做?我的元组将有更多的变量,但变量并不总是相同的。我试过类似的东西 A_names = tuple([str(var) for var in A]) 但是这不起作用。假设您想要动态/可访问的名称,您需要使用字典 import inspect def retrieve_name(var):
A = (a,b,c)
在哪里
我想制作一个元组或列表,其中是变量的名称。所以
A_names = ('a','b','c')
我怎么能这样做?我的元组将有更多的变量,但变量并不总是相同的。我试过类似的东西
A_names = tuple([str(var) for var in A])
但是这不起作用。假设您想要动态/可访问的名称,您需要使用字典
import inspect
def retrieve_name(var):
local_vars = inspect.currentframe().f_back.f_locals.items()
return [var_name for var_name, var_val in local_vars if var_val is var]
a = [1,2,3]
b = [2,4,6,4]
c = [4,6,4]
a_list = (a,b,c)
a_names = []
for x in a_list:
a_names += (retrieve_name(x)[0])
print a_names
下面是一个带有字典的实现:
my_variables = {'a': [1,2,3,...],
'b': [2,4,6,4,...],
'c': [4,6,4,...]}
my_variable_names = my_variables.keys()
for name in my_variable_names:
print(my_variables[name])
您所问的问题是,执行
A=(A,b,c)
不会将变量“A”、“b”和“c”分配给元组A
。相反,您正在为这些名称所引用的每个对象创建一个新引用
例如,如果我做了A=(A,)
,一个具有单个对象的元组。我还没有指定变量“a”。相反,将在元组对象中的位置0处创建引用。该引用是指名称a
引用的同一对象
>>> a = 1
>>> b = 2
>>> A = (a, b)
>>> A
(1, 2)
>>> a = 3
>>> A
(1, 2)
请注意,将新值指定给a
根本不会更改元组中的值
现在,您可以使用locals()
或globals()
字典,查找与A
中的值匹配的值,但无法保证准确性,因为您可以有多个名称引用同一个值,而您不知道哪个是哪个
>>> for key, val in locals().items():
if val in A:
print(key, val)
('a', 1)
('b', 2)
只是出于学术兴趣:
dir() will give you a list of the variables currently visible,
locals() gives the list of local variables
globals() (guess)
请注意,将显示一些意外变量(以_;开头和结尾),这些变量已经由Python定义
A = {'a' : [1,2,3,...],
'b' : [2,4,6,4,...],
'c' : [4,6,4,...]}
A_names = A.keys()
for name in A_names:
print(A[name])
然后,您可以始终通过以下方式向字典添加新值:
A.update({'d' : [3,6,3,8,...], 'e' : [1,7,2,2,...]})
或者,您可以通过执行以下操作更改项目的值:
A.update({'a' : [1,3,2,...]})
要打印特定值,只需键入:
print(A['c'])
我的连接被搞乱了,所以我不能早点发布,但我相信这可以解决你不用使用字典的问题
import inspect
def retrieve_name(var):
local_vars = inspect.currentframe().f_back.f_locals.items()
return [var_name for var_name, var_val in local_vars if var_val is var]
a = [1,2,3]
b = [2,4,6,4]
c = [4,6,4]
a_list = (a,b,c)
a_names = []
for x in a_list:
a_names += (retrieve_name(x)[0])
print a_names
输出
['a'、'b'、'c']
请将您的问题格式化为代码。它不可读。您是否询问变量是否能够知道其名称?或者,如果您愿意,如果一个值知道保存它的变量的名称?(以非Python的方式说)你为什么要这样做?如果需要访问A
的第二个元素,而不是编写b
,只需编写A[1]
。为什么要这样做?如果您需要存储变量名或具有动态名称,最好使用字典
而不是列表
/元组
组合。这正是字典的用途,因此没有设计任何功能来支持您要采用的方法。哈,谢谢!我告诉自己要改变它们,然后完全忘记了。