Python中的变量变量

时间:2014-03-14 05:06:58

标签: python dictionary

我有一个n字符串列表。例如,strings = ('path1','path2',path3')

我想创建与这些字符串上的函数相等的n个变量。例如:

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

我之前已经看了几遍,答案似乎总是指字典。虽然我知道它们的基本功能,但我对词典并不太熟悉。我不知道怎么用字典来完成这个。

3 个答案:

答案 0 :(得分: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 :(得分:1)

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

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

上述语句将pygame.mixer.Sound中的每个字符串作为参数调用strings,并将结果作为列表返回。然后,您可以像访问列表中的任何项一样访问变量。

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

答案 2 :(得分:1)

这个想法是你使用字典(或列表)代替这样做。最简单的方法是使用列表:

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

然后,您可以sounds[0]sounds[1]sounds[2]等方式访问它们。