我有一个字符串列表,例如:
names = ['apple','orange','banana']
我想为列表中的每个元素创建一个列表,该列表的名称与字符串完全相同:
apple = []
orange = []
banana = []
我怎样才能在Python中这样做?
答案 0 :(得分:30)
您可以通过创建dict
:
fruits = {k:[] for k in names}
然后访问每个(例如:) fruits['apple']
- 你不想走分别变量的道路!
答案 1 :(得分:6)
始终使用Jon Clements' answer。
globals()
返回支持全局命名空间的字典,此时您可以像对待任何其他字典一样对待它。 你不应该这样做。它会导致命名空间的污染,可以覆盖现有的变量,并且更难以调试由此产生的问题。
for name in names:
globals().setdefault(name, [])
apple.append('red')
print(apple) # prints ['red']
你必须事先知道列表中包含'apple'以便稍后引用变量'apple',此时你可以正常定义变量。所以这在实践中没用。鉴于Jon的答案也产生了字典,使用globals
没有任何好处。