首页 > 解决方案 > 使用字符串识别对象,python 3

问题描述

我在几个案例中遇到了一个问题,但还没有找到一个优雅的解决方案。我希望能够使用其名称作为字符串来选择一个对象(任何类型)。下面的示例显示我想通过遍历它们名称的最后一个字符来访问三个预定义列表,以执行一些功能——在这种情况下提取列表的第二个元素并将其附加到一个新列表中。

my_list_1 = [1,2,3]
my_list_2 = [4,5,6]
my_list_3 = [7,8,9]
my_result = []

for i in range (1,4):
    my_str = 'my_list_'+str (i)
    my_object = object(my_str)
    x = my_object[1]
    my_result.append(x)

print my_result

这段代码当然不起作用,因为“my_object = object(my_str)”行无法找到一种方法来使用其名称作为字符串来识别列表。

有没有人设法克服类似的问题?

谢谢

标签: python

解决方案


您可以使用locals()内置来访问当前的本地符号表,以 dict 的形式返回。所以:

my_list_1 = [1,2,3]
my_list_2 = [4,5,6]
my_list_3 = [7,8,9]
my_result = []

L = locals()
for i in range (1,4):
    my_str = 'my_list_' + str(i)
    my_result.append(L[my_str][1])

print my_result

推荐阅读