什麼你想要做的是幾乎總是一個壞主意。如果你只是創建的,而不是一堆獨立變量的字典,這是微不足道的:
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