【发布时间】:2012-12-23 20:23:06
【问题描述】:
我有一个字符串列表,例如:
names = ['apple','orange','banana']
我想为列表中的每个元素创建一个列表,将其命名为字符串:
apple = []
orange = []
banana = []
如何在 Python 中做到这一点?
【问题讨论】:
标签: python
我有一个字符串列表,例如:
names = ['apple','orange','banana']
我想为列表中的每个元素创建一个列表,将其命名为字符串:
apple = []
orange = []
banana = []
如何在 Python 中做到这一点?
【问题讨论】:
标签: python
始终使用Jon Clements' answer。
globals() 返回支持全局命名空间的字典,此时您可以像对待任何其他字典一样对待它。 你不应该这样做。它会导致命名空间的污染,可以覆盖现有的变量,并使调试由此产生的问题变得更加困难。
for name in names:
globals().setdefault(name, [])
apple.append('red')
print(apple) # prints ['red']
您必须事先知道该列表包含“apple”,以便稍后引用变量“apple”,此时您可以正常定义该变量。所以这在实践中是没有用的。鉴于 Jon 的回答还会生成字典,因此使用 globals 没有任何好处。
【讨论】:
globals() 几乎是一个包含全局变量的字典。此解决方案可能会导致对全局命名空间和覆盖现有变量的不必要污染。如果您使用 Jon 的解决方案,您可以使用 fruits['apple'] 和类似方法获得相同的列表,因此它没有太大的缺点。
你可以通过创建一个dict来做到这一点:
fruits = {k:[] for k in names}
然后通过(例如:)fruits['apple'] 访问每个变量 - 你不想走单独变量的道路!
【讨论】: