2014-03-14 107 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]