首页 > 解决方案 > 如果 a 在 my_friends.items()

问题描述

这是我的代码如下:

my_friends = {
  "Jose": 6,
  "Rolf": 12, 
  "Anne": 6
};



for e, v in my_friends.items():

    a = ('Jose', 6);

    if a in my_friends.items():

        print("yes");

运行此代码,您会打印 3 次“是”。这很令人困惑,因为当你打印 my_friends.items() 时,你会得到 [('Jose', 6), ('Rolf', 12), ('Anne', 6)] 如果是这样,不应该是的,因为 ('Jose', 6) 在 my_friends.items() 列表中出现一次,所以打印一次?对此新手,请原谅这个可能无知的问题。

标签: pythonpython-3.x

解决方案


您给出的代码没有适当的缩进,所以让我先解决这个问题:

my_friends = { "Jose": 6, "Rolf": 12, "Anne": 6 }

for e, v in my_friends.items():
    a = ('Jose', 6)
    if a in my_friends.items():
        print("yes")

让我打破你想要做的事情。这将使您更容易理解正在发生的事情。

1) 创建一个包含三个项目的字典。2) 使用循环
对字典进行迭代。(共3次迭代) 3)在每次迭代中,检查字典中是否存在。 4)确实存在于字典中,因此 在每次迭代中都会打印出来。for
('Jose', 6)
('Jose', 6)"yes"

如果要检查('Jose', 6)字典中是否存在,只需执行以下操作即可for

if a in my_friends.items():
    print("yes")

或者,如果您真的想使用for循环,可以执行以下操作:

a = ('Jose', 6)
for e, v in my_friends.items():
    if a == (e,v):
        print("yes")

BTW,你不需要写a = ('Jose', 6)在for循环里面,你可以写在循环外面,如上图。a关键是在循环中一次又一次地分配相同的值是多余的。你可以简单地在循环外做一次


推荐阅读