从列表项创建字符串

时间:2010-01-22 10:30:54

标签: python

我有一个列表list = ['foo','bar'],现在我想从每个项目创建一个字符串。

每个字符串都被命名为项目,并具有项目的值

foo ='foo' bar ='bar'

感谢所有人,我将改用dict

5 个答案:

答案 0 :(得分:9)

不要那样做。改为使用dict。

strings = dict((x, x) for x in L)

答案 1 :(得分:3)

Ignacio Vazquez-Abrams是对的,使用dict更好。但如果你坚持让它们作为变量可用,你可以随时这样做:

strings = dict((x, x) for x in L)
locals().update(strings)

PS:Edan Maorexec版本存在安全问题。它不会处理["foo", "';__import__('os').system('rm -rf ~');'"],例如:)

答案 2 :(得分:1)

尝试:

>>> l = ["foo", "bar"]
>>> for item in l:
    exec("%s = '%s'" % (item, item))

注意:为什么需要这个?你确定这是做你想做的最好的方式吗?我问,因为这通常不是一个好主意。

安全警告:正如AttilaOláh所指出的,使用“exec”运行任意代码是一个非常糟糕的主意。只有在你控制列表中的字符串时才使用它(例如,它们不是来自用户的输入)。

答案 3 :(得分:0)

尽管名称不同,但Python中的变量实际上并不是变量。如果您要将数据与“名称”相关联,则应使用dict代替:

data = {}
for s in ['foo', 'bar']:
    data[s] = s

有时候(!)可以修改locals()来引入新的变量,但是由于你没有明智的方式来引用它们(因为你在编写代码时不知道它们的名字),所以真的没有它的价值。它所做的只是使你的代码 lot 更慢,更难理解。

答案 4 :(得分:0)

查看http://docs.python.org/library/functions.html#setattr

你应该能够按照

的方式做点什么
for x in list:
    setattr(object, x, x)

假设object是你想要添加属性的任何对象。