Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问Python打印语句中的列表名称_Python - Fatal编程技术网

访问Python打印语句中的列表名称

访问Python打印语句中的列表名称,python,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 p

我正在运行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)
在第一次迭代中,这应该完成一些工作,然后打印出来:“我刚刚完成列表1的工作”。但是:当我运行代码时,会出现以下错误:

TypeError: must be str, not list

这很有道理(列表毕竟不是字符串),但是有什么方法可以将列表的名称作为字符串(“列表1”)获取吗?我知道我可以使用dict来代替(这就是我现在正在做的),但我还是感兴趣

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

您可以创建一个类来封装一个名称,但是如果一个字典就足够了,这将是一个很大的开销

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'

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

my_list = [1,2]
my_var_name = [k for k,v in locals().items() if v == my_list][0]
print(my_var_name)
它给出了“我的列表”


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

不,您应该使用dict。变量就像Python中对象的便签标签,没有太多理由尝试将它们生成为字符串。可能吗?通过查看
locals()
,可能在某种程度上是这样的。名称
list
(您不应该使用它,有一个名为
list
的函数),在循环的第一次迭代中映射到与名称
list1
相同的值,但是
list
list1
之间没有关系不容易或不可靠,对象不知道其名称在不同的范围内可能有许多不同的名称。你可以做一些奇怪的事情,比如搜索
globals()
locals()
使用
is
将每个值与你的对象进行比较,但这是一项在很多情况下都可能失败的工作。名称指的是对象,但对象不知道绑定到它们的名称;读一下这个问题,这个问题看起来很像:-那样的话,我就坚持用字典。谢谢你的帮助!这不只是给出对象的字符串化值吗?是的,从问题中我认为他/她想打印list@HumbertoPinheiro不,OP想要打印列表的变量名-您的解决方案完全没有抓住要点。