你试图做的几乎总是一个坏主意。如果你只是创建一个字典,而不是一堆单独的变量,这很简单:
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_123_456'
而不是('123', '456')
,或者使用两级嵌套字典,这样您就可以编写lists[filename[0:3]][filename[6:9]]
……任何您认为最易读的东西。
如果您真的非常想这样做,如果您知道要在其中评估它的范围,则可以查找变量名称以获取其值,因为globals()
, locals()
,MyClass.__dict__
等总是可以访问的,而且它们是字典。所以:
name_name = 'list_{0}_{1}' .format(filename[0:3],filename[6:9])
name = globals()[name_name]
如果最坏的情况发生,你甚至可以eval(name_name)
。但这是一个更糟糕的主意。
有关更多详细信息,请参阅此博客文章。