Python-在嵌套的for循环中使用时如何获取列表的名称

时间:2018-08-09 13:24:39

标签: python arrays variables if-statement

我正在使用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__'

如果该属性不存在,我可以使用哪些方法来检查列表名称?

2 个答案:

答案 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]

但是我也应该通知您,它可以解决问题,但是不应该这样做。