2017-08-03 81 views
2

我知道這可能是一個壞主意..但似乎是在創建所有可能選項之外做到這一點的最佳方法,並忽略了未使用的結果。我有一個包含12個潛在值的源文件。動態創建變量(對於列表)

我在列表中已經有了所有必需的字符串,但是我打算讓每個字符串都是列表本身的開始,如果這有什麼意義呢?

例如當前列表包含 「A,B,C,d,e」 的循環中所要求的輸出將是 'A = [] .. B = []' 等

+0

「list」的'list'怎麼樣? – EsotericVoid

回答

5

假設你的意思不是「開始的列表」,而是「名稱的列表」(如你的代碼所暗示的)...是的,這是一個壞主意。你或許應該使用dict代替,像

d = {var_name: [] for var_name in current_list} 

其實,這是什麼樣的Python做幕後。當你寫

a = [] 

那麼Python是增加一個條目a: []到(東西基本上等同於):dict。如果在模塊範圍內,則可以使用globals()函數查看該字典中的內容,如果在函數內,則可以查看locals()中的內容。

+0

對不起,我是指名單的名字。感謝您的回覆:) – TrueSlawter

3

我做不是建議通過動態生成變量來污染你的名字空間。這可能特別與大型列表失控。你應該使用字典來代替。

In [941]: d = {x : [] for x in 'abcde'}; d 
Out[941]: {'a': [], 'b': [], 'c': [], 'd': [], 'e': []} 

看看這是多麼容易創建和維護。

+0

感謝您的回覆,我使用的列表將只包含最多12個值,因爲在進入此階段之前,可以說「源列表」已被「設置」以消除任何重複 – TrueSlawter

+0

@TrueSlawter仍然,爲什麼排除字典?當然,你可能會污染'globals()'或使用'eval',但不推薦這些。 –