在Python print语句中访问列表的名称

时间:2017-02-02 16:41:02

标签: python

我正在运行Python 3.6和Pandas 0.19.2并希望按如下方式访问列表名称:

# work on the following two lists
for list in [list1, list2]: 
    # loop through items in each list
    for entry in bucket_set: 
        # do stuff
    # let user know I finished working on list x
    print('i just finished working on: '+list)

在第一次迭代中,这应该做的事情然后打印出来:'我刚刚完成了list1'。但是:当我运行我的代码时,我收到以下错误:

TypeError: must be str, not list

这很有道理(毕竟列表不是字符串),但是有什么方法可以将我的列表名称作为字符串(' list1')?我知道我可以使用dict(这就是我现在正在做的事情),但我仍感兴趣。

3 个答案:

答案 0 :(得分:2)

您可以创建一个通常封装名称的类,但是当字典足够时,这会产生大量开销。

class NamedObject:
    def __init__(self, name, obj):
        self.name = name
        self.obj = obj

    def __getattr__(self, attr):
        if attr == 'name':
            return self.name
        else:
            return getattr(self.obj, attr)


unnamed_list = [1, 2, 3]
named_list = NamedObject('named_list', unnamed_list)

print(named_list) # [1, 2, 3]
print(named_list.name) # 'named_list'

答案 1 :(得分:0)

您可以创建类或字典,也可以迭代变量。

my_list = [1,2]
my_var_name = [k for k,v in locals().items() if v == my_list][0]
print(my_var_name)

它给出'my_list'

请注意,列出的值必须唯一!

答案 2 :(得分:-4)

有很多选项,其中一个是repr(list)