Access the name of a list in a Python print statement
我正在运行python 3.6和pandas 0.19.2,希望访问以下列表的名称:
1 2 3 4 5 6 7 | # 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的工作"。但是:当我运行代码时,会出现以下错误:
1 | TypeError: must be str, not list |
号
这是完全有道理的(列表毕竟不是字符串),但是有没有任何方法可以将列表的名称作为字符串("list1")获取?我知道我可以用听写代替(这是我现在正在做的),但我仍然感兴趣。
您可以创建一个类来封装一个名称,但是当字典足够时,这是一个很大的开销。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 2 3 | my_list = [1,2] my_var_name = [k for k,v in locals().items() if v == my_list][0] print(my_var_name) |
号
它给了
注意列表值必须是唯一的!
有许多选项,其中一个是repr(list)