2014-03-14 104 views
0

我有一個n字符串的列表。例如,strings = ('path1','path2',path3')Python中的變量變量

我想創建n等於這些字符串函數的變量。例如:

s1=pygame.mixer.Sound('path1') 
s2=pygame.mixer.Sound('path2') 
s3=pygame.mixer.Sound('path3')` 

我已經查看過幾次,而且答案似乎總是指代字典。雖然我知道他們的基本功能,但我對字典不太熟悉。我不知道如何使用字典來實現這一點。

回答

2

動態創建變量的問題是:你怎麼打算在代碼中引用它們?你需要有一些抽象機制來處理0..n對象,所以你不妨將它們存儲在一個可以處理集合的數據類型中。你如何儲存它們取決於你想要對它們做什麼。兩個最明顯的選擇是listdict

一般情況下,您將使用list,如果你想順序處理它們:

paths = ['path1', 'path2', 'path3'] 
sounds = [ pygame.mixer.Sound(path) for path in paths ] 

# play all sounds sequentially 
for sound in sounds: 
    sound.play() 

dict使用,如果您有您要使用的參考項目的部分標識符:

paths = ['path1', 'path2', 'path3'] 
sounds = { path: pygame.mixer.Sound(path) for path in paths } 

# play a specific sound 
sounds[name].play() 
1

你不需要使用字典。使用map

s = map(pygame.mixer.Sound, strings) 

上面的語句將調用pygame.mixer.Sound與每個strings的字符串作爲參數,並將結果作爲一個列表返回。然後你可以像訪問列表中的任何項一樣訪問這些變量。

s1 = s[0] # based on your previous definition 
1

的想法是,你使用字典(或清單),這樣做的代替。最簡單的方法是用一個列表:

sounds = [pygame.mixer.Sound(path) for path in strings] 

然後,您可以訪問它們爲sounds[0]sounds[1]sounds[2]