Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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_List - Fatal编程技术网

Python 字符串未被识别为列表名称

Python 字符串未被识别为列表名称,python,list,Python,List,我有一份名单,上面有一个名字: list_123_456 = [1,2,3] 然后,我使用文件名的某些部分重新创建此列表的名称: name = 'list_{0}_{1}' .format(filename[0:3],filename[6:9]) 这在某种程度上是有效的,“name”现在等于我想要的“list_123_456”。但代码将其视为字符串,而不是我在开始时定义的列表 例如,如果我尝试: len(name) 我得到的答案是“12”(名字中的字母),而不是我想要的“3” 任何帮助都会

我有一份名单,上面有一个名字:

list_123_456 = [1,2,3]
然后,我使用文件名的某些部分重新创建此列表的名称:

name = 'list_{0}_{1}' .format(filename[0:3],filename[6:9])
这在某种程度上是有效的,“name”现在等于我想要的“list_123_456”。但代码将其视为字符串,而不是我在开始时定义的列表

例如,如果我尝试:

len(name)
我得到的答案是“12”(名字中的字母),而不是我想要的“3”


任何帮助都会很好,谢谢。

您可以使用字典按姓名获取您的列表:

>>> list_123_456 = [1,2,3]
>>> locals()['list_123_456']
[1, 2, 3]
但这不是一个好的做法。取而代之的是,考虑用实际的列表映射列表名称来制作字典:

>>> data = {'list_123_456': list_123_456}
>>> data['list_123_456']
[1, 2, 3]

您可以使用字典按名称获取列表:

>>> list_123_456 = [1,2,3]
>>> locals()['list_123_456']
[1, 2, 3]
但这不是一个好的做法。取而代之的是,考虑用实际的列表映射列表名称来制作字典:

>>> data = {'list_123_456': list_123_456}
>>> data['list_123_456']
[1, 2, 3]
但代码将其视为字符串,而不是我在开始时定义的列表

那是因为它是一个字符串。字符串不能与变量互换(通常称为字符串,尽管“名称”也是一个好术语)

通常,如果要使用计算名称(即字符串)查找一段数据,应将其存储在
dict

byname = {'list_123_456':[1,2,3]}
byname[name] #=> [1,2,3]
但代码将其视为字符串,而不是我在开始时定义的列表

那是因为它是一个字符串。字符串不能与变量互换(通常称为字符串,尽管“名称”也是一个好术语)

通常,如果要使用计算名称(即字符串)查找一段数据,应将其存储在
dict

byname = {'list_123_456':[1,2,3]}
byname[name] #=> [1,2,3]

你想做的几乎总是一个坏主意。如果您只是创建一个字典,而不是一堆单独的变量,那么这很简单:

lists = {}
lists[('123', '456')] = [1, 2, 3]
# ...
现在,不是这样:

name = 'list_{0}_{1}' .format(filename[0:3],filename[6:9])
…您可以这样做:

name = lists[(filename[0:3], filename[6:9])]
当然,您可以将字典的键从
'list\u 123\u 456'
中调出,而不是
('123','456')
,或者使用两级嵌套dict,这样您就可以编写
列表[filename[0:3]][filename[6:9]
…任何您认为可读性最好的内容


如果你真的真的想这样做,如果你知道要计算它的范围,你可以查找变量名来获取它的值,因为
globals()。因此:

name_name = 'list_{0}_{1}' .format(filename[0:3],filename[6:9])
name = globals()[name_name]
如果出现最坏的情况,您甚至可以
eval(name\u name)
。但这是一个更糟糕的想法



有关详细信息,请参阅。

您试图做的几乎总是一个坏主意。如果您只是创建一个字典,而不是一堆单独的变量,那么这很简单:

lists = {}
lists[('123', '456')] = [1, 2, 3]
# ...
现在,不是这样:

name = 'list_{0}_{1}' .format(filename[0:3],filename[6:9])
…您可以这样做:

name = lists[(filename[0:3], filename[6:9])]
当然,您可以将字典的键从
'list\u 123\u 456'
中调出,而不是
('123','456')
,或者使用两级嵌套dict,这样您就可以编写
列表[filename[0:3]][filename[6:9]
…任何您认为可读性最好的内容


如果你真的真的想这样做,如果你知道要计算它的范围,你可以查找变量名来获取它的值,因为
globals()。因此:

name_name = 'list_{0}_{1}' .format(filename[0:3],filename[6:9])
name = globals()[name_name]
如果出现最坏的情况,您甚至可以
eval(name\u name)
。但这是一个更糟糕的想法



有关详细信息,请参阅。

这是因为
name
是一个字符串。您可能希望获取与该变量名关联的对象,可能是使用
eval
,这是不推荐的。上次我查看时发现了11个独立的DUP,其中每个DUP都链接到其他几个DUP……这是因为
name
是一个字符串。您可能希望获取与该变量名关联的对象,可能是使用
eval
,这是不推荐的。我上次查看时发现了11个独立的DUP,其中每一个都链接到其他几个…