我有一个n
字符串列表。例如,strings = ('path1','path2',path3')
我想创建与这些字符串上的函数相等的n
个变量。例如:
s1=pygame.mixer.Sound('path1')
s2=pygame.mixer.Sound('path2')
s3=pygame.mixer.Sound('path3')`
我之前已经看了几遍,答案似乎总是指字典。虽然我知道它们的基本功能,但我对词典并不太熟悉。我不知道怎么用字典来完成这个。
答案 0 :(得分:2)
动态创建变量的问题是:您如何计划在代码中引用它们?您需要有一些抽象的机制来处理0..n
对象,因此您可以将它们存储在可以处理集合的数据类型中。你如何存储它们取决于你想用它们做什么。最明显的两个选择是list
和dict
。
一般情况下,如果您想按顺序处理它们,您将使用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]
等方式访问它们。