Python个嵌套循环中同一个变量ID不同?

The same variable in Python Nested-loops has different IDs?

很简单的Python代码,但是为什么变量n有不同的ID?如何实现这个函数获取car的字典名?

a = [{'a':['apple','animal']},{'b':['banana']},{'c':['class','car']}]
n = 0
while n < 3:
    print(id(n))
    for k in a[n].keys():
        if 'car' not in a[n][k]:
            n += 1
            print(id(n))
        else:
            print(k)
            break
    break

代码的结果是:

140720577618304
140720577618336

您似乎想在列表中搜索 car 并查找哪个键包含该列表。

a = [{'a':['apple','animal']},{'b':['banana']},{'c':['class','car']}]

for d in a:
    for k in d.keys():
        if 'car' in d[k]:
            print(k)
            break

输出:c

id 不是您要查找的内容。当遍历一个你没有改变的可迭代对象时,不要使用 while conditionfor i in range(stop:start:end)。相反,你会想要 for i in iterable。在你的情况下,一个班轮可能是

a = [{'a':['apple','animal']},{'b':['banana']},{'c':['class','car']}]
answer = [k for d in a for k in d.keys() if 'car' in d[k]]

输出

['c']

Python 中的一个整数是不可变的。通过执行 n+=1,您并没有修改名为 n 的对象,而是覆盖了名称以指向新的整数对象。