我正在使用python 2.6.6
我正在尝试使用if
语句来检查嵌套的for循环中列表的名称。
这是我的代码:
blueList = ["light blue", "dark blue"]
redList = ["light red", "dark red"]
orangeList = ["light orange", "dark orange"]
colorsGroup = [blueList, redList, orangeList]
for member in colorsGroup:
for colorNameInList in member:
if "orange" in member.__name__:
print("the name of this list contains the word orange")
elif "red" in member.__name__:
print("the name of this list contains the word red")
elif "orange" in member.__name__:
print("the name of this list contains the word orange")
我不断得到:
AttributeError: 'list' object has no attribute '__name__'
如果该属性不存在,我可以使用哪些方法来检查列表名称?
答案 0 :(得分:2)
如果您想读取变量名,请考虑将其用作字典的键,例如:
colorsGroup = {'blueList':blueList, 'redList':redList, 'orangeList':orangeList}
然后您可以像这样迭代:
for key, value in colorsGroup.iteritems():
if 'blue' in key:
print("the name of this list contains....")
elif 'orange' in key:
print("the name of this list contains...")
else:
print("the name of this list contains...")
答案 1 :(得分:0)
基本上,您无法执行的操作。这是因为列表在python中可以作为参考。考虑以下代码:
a = [1,2,3,4]
b = a
a和b都指向同一列表。因此,很难根据列表来获取变量的名称。
有了上述说法,您可以在代码中完成一项工作。以下代码可以解决问题。
import inspect
def retrieve_name(var):
callers_local_vars = inspect.currentframe().f_back.f_locals.items()
return [var_name for var_name, var_val in callers_local_vars if var_val is var]
但是我也应该通知您,它可以解决问题,但是不应该这样做。