Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将列表变量名转换为字符串_Python_Variables - Fatal编程技术网

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]
。为什么要这样做?如果您需要存储变量名或具有动态名称,最好使用
字典
而不是
列表
/
元组
组合。这正是字典的用途,因此没有设计任何功能来支持您要采用的方法。哈,谢谢!我告诉自己要改变它们,然后完全忘记了。