什么你想要做的是几乎总是一个坏主意。如果你只是创建的,而不是一堆独立变量的字典,这是微不足道的:
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)
。但这是一个更糟的想法。
请参阅this blog post了解更多详情。
这是因为'name'是一个字符串。您可能想要获取与该变量名称关联的对象,可能使用'eval',这是不推荐的 – inspectorG4dget
我上次查找时发现了11个独立的dups,并且每个人都链接到其他几个人...... – abarnert