从对象值创建python字符串

时间:2012-10-11 08:38:42

标签: python string

我不知道描述我真正想要的东西的最佳方式 可能这个例子最适合解释我的问题:

我有以下字符串列表(我的对象名称):

mynames = ["A","B","C"]

我的对象本身被定义为:

A = "Hello"
B = 12
C = "This is C"

现在,我想创建一个逗号分隔的字符串,其中包含所有对象的值 在“mynames”中如:

myresult = "Hallo,12,This is C"

当然我可以像以下一样手动完成:

",".join([A,str(B),C])

但有没有办法根据列表“mynames”创建结果,例如“,”。join(mynames)??

感谢,

/ J

3 个答案:

答案 0 :(得分:4)

显而易见的答案是使用

中的globals()或locals()
lst = [globals()[x] for x in 'A', 'B', 'C']

正确的是

 don't do that

每次尝试在python中操作变量名时,你都会做错事。使用适当的数据结构,如dict。

答案 1 :(得分:2)

如其他答案所述,你可以使用eval,literal-eval,globals,locals或其他类似的废话来完成你的任务 - 但你的方法是错误的。

正如我认为在其他答案中提到的,你最好使用不同的数据结构,也许是字典。例如,在你的例子中:

A = "Hello"
B = 12
C = "This is C"

可以通过以下方式完成:

my_dict = {}
my_dict["A"] = "Hello"
my_dict["B"] = 12
my_dict["C"] = "This is C"

然后你可以这样做:

mynames = ["A","B","C"]
print [my_dict[key] for key in mynames]
在控制台上

,这是结果:

>>> my_dict = {}
>>> my_dict["A"] = "Hello"
>>> my_dict["B"] = 12
>>> my_dict["C"] = "This is C"
>>> mynames = ["A","B","C"]
>>> print [my_dict[key] for key in mynames]
['Hello', 12, 'This is C']

将它们组合成一个字符串现在很简单,我相信你可以从这里开始。

答案 2 :(得分:0)

eval是你的朋友:

",".join([ str(eval(e)) for e in mynames ])