Python 如何从字符串列表创建列表?

Python 如何从字符串列表创建列表?,python,Python,我有一个字符串列表,例如: names = ['apple','orange','banana'] 我想为列表中的每个元素创建一个列表,其名称与字符串完全相同: apple = [] orange = [] banana = [] 在Python中如何实现这一点 您可以通过创建dict来实现这一点: 然后通过例如:fruits['apple']访问每个变量-您不想走上单独变量的道路 始终使用 globals返回支持全局名称空间的字典,此时您可以将其视为任何其他字典。你不应该这样

我有一个字符串列表,例如:

names = ['apple','orange','banana'] 
我想为列表中的每个元素创建一个列表,其名称与字符串完全相同:

apple = []  
orange = []  
banana = []  

在Python中如何实现这一点

您可以通过创建dict来实现这一点:

然后通过例如:fruits['apple']访问每个变量-您不想走上单独变量的道路

始终使用

globals返回支持全局名称空间的字典,此时您可以将其视为任何其他字典。你不应该这样做。它会导致名称空间的污染,会覆盖现有变量,并使调试由此产生的问题变得更加困难

for name in names:
    globals().setdefault(name, [])
apple.append('red')
print(apple)  # prints ['red']

您必须事先知道列表中包含“apple”,以便稍后引用变量“apple”,此时您可以正常定义变量。因此,这在实践中没有用处。考虑到Jon的答案也会产生一本词典,使用globals没有任何好处。

你的最终目标是什么?我这样问是因为你通常可以完成你想做的事情,而不必以那种方式命名许多变量。@DSM你能解释一下为什么你投票认为这是错误的吗?谢谢@维姆:当然!这一次是一年半以前的。如果您想将另一个作为此文件的dup关闭,或者将这两个文件都作为某个早期文件的dup关闭,那么这可能是有意义的。但是,由于两个问题的一个正确答案是相同的,我看不出这个问题与另一个问题是如何重复的。@DSM我没有检查日期,也许我应该检查一下。我们正在讨论这个问题。实际上我更喜欢这个解决方案,因为它允许我创建列表,而不是像建议的那样创建字典。所以我想问为什么我应该使用@Jon Clements方法而不是这个方法?非常感谢你们两位@user1962851-globals几乎是一个保存全局变量的字典。此解决方案可能会对全局命名空间造成不必要的污染,并覆盖现有变量。如果你使用Jon的解决方案,你可以通过使用水果['apple']和类似的东西得到相同的列表,因此没有太大的负面影响。好的,非常感谢你的解释。我会把乔恩的答案定为可以接受的答案。
for name in names:
    globals().setdefault(name, [])
apple.append('red')
print(apple)  # prints ['red']