使用Python 3.3,我想循环d.items()并根据if条件返回匹配项。这是代码:
d = {'mohammed': '123456789', 'john': '1230012'}
for k, v in d.items():
if k == 'mohammed' and v == '123456789':
print("Match")
else:
print("No Match")
我希望打印“匹配”,但是我得到的是两个语句都相反打印,即,
No Match
Match
如何让代码只打印正确的语句?感谢任何帮助。
首先,字典(Dict对象)是无序的,所以你不能确定哪个条目首先被访问/迭代。
其次,从表面上看(假设),您只需要一个匹配或不匹配的输出。
您可以通过简单的布尔值来做到这一点;
matched = False
for k, v in d.items():
if k == 'mohammed' and v == '123456789':
print("Match")
matched = True
break
if not matched:
print("No Match")
或
如果要按顺序访问这些内容,可以将数据结构更改为类似
[('muhammad','somevalue'),(),...]
然后你可以在这个列表上迭代,得到如下内容
for obj in d:
t_val_1, t_val_2 = obj
if t_val_1 == 'mohammed' and t_val_2 == '123456789':
print("Match")
else:
print("No Match")
字典没有排序,因此 d
中的条目可能不会以您键入它们的相同顺序存储。因此,无法准确预测 d.items()
迭代 d
中条目的顺序。
当您迭代 d.items() 时
,您正在迭代所有键、值对。因此,如果一对匹配您的 if 条件,则将打印匹配
。根据相同的推理,如果一对与您的if条件不匹配,则将打印“无匹配”
。
在您的示例中,键、值对在d迭代期间的顺序。items()
与输入它们的顺序正好相反。让我们看看这个:
要考虑的第一个键、值对是'john':'1230012'
。这与您的if条件不匹配。因此打印了No Match
。
下一对是'mohammed':'123456789'
,它确实匹配您的if条件。因此打印了匹配
。
您可以通过在if语句之前添加print(k, v)
来确认这一点
现在,如果由于某种原因,你想要字典的功能,并且你想要保持你输入数据的顺序,那么我建议你使用集合。有序词典
在您的帖子中,您说“我希望打印< code>Match”。因此,我认为,你正在寻找的,是一种检查字典中是否有满足if条件的键/值对的方法。这里有两种方法可以实现这一点:
d = {'mohammed': '123456789', 'john': '1230012'}
found = False
for k,v in d.items():
if k == 'mohammed' and v == '123456789':
print("Match")
found = True
if not found: # equivalently, if found == False:
print("No Match")
这将打印< code>Match,只要有与if条件匹配的键、值对。但是,如果即使有多对匹配If条件,您也希望只打印一次< code>Match,那么您可以对上面的代码做一个小小的修改:
d = {'mohammed': '123456789', 'john': '1230012'}
found = False
for k,v in d.items():
if k == 'mohammed' and v == '123456789':
found = True
if found:
print("Match")
else:
print("No Match")
当然,这一切都有一句简单的话:
if any(k == 'mohammed' and v == '123456789' for k,v in d.items()):
print("Match")
else:
print("No Match")
if语句 (实际上是if表达式) OCaml有两种if语句: if boolean-condition then expression if boolean-condition then expression else other-expression 不同于传统的语言,if语句是表达式。它们更类似于C类语言中的三元操作符?: 而不是你所熟悉的if语句。 下面是if语句的简单例子: # le
数据库表: 胶片(id\U胶片主键,名称) 流派(id_genrePK,名称) film_genre(id_filmFK,id_genreFK) 这将输出流派表中的所有流派: 这将输出特定电影的电影类型表中的所有选定类型: 我有一个问题,从数据库输出数据到多个选定的列表中的形式。这是一个电影数据库,我正在进行Foreach迭代,以读取电影流派的所有行,并输出到多个选择字段。但是我在向列表输出“选定
所以程序应该是:-获取用户的输入,直到用户键入“n或N”以显示停止的标志-当用户键入“n或N”时,程序正数和负数和。 还有我得到的 这个错误信息,我不知道是什么问题。提前谢谢你!
问题内容: 目前无法打破此循环。如果要在此列表中找不到变量,我想破坏它,以便它可以移动另外两个循环。它期望在循环的顶部有一个缩进的块,但是如果更改循环的开头或开头的位置,它将无法正常工作。救命! 问题答案: 正如人们在对您的问题的评论中提到的那样,您需要分别打破每个循环,仅停止其所在的循环 两个 循环都需要这样做 如果您也想打破while循环,那么您也可以添加该循环。
我有一个380行20列的表格。我想从该表中删除符合特定条件的行。 为了澄清问题,假设我有以下列表: 我想删除在列表中找到姓名的所有人员的数据。 例如,假设我的数据如下所示: 我想删除、和的数据。所以输出应该是: 我的代码正在运行,但数据没有从我的原始数据中删除。当我打开新的测试.txt文件时,我可以看到数据没有被删除。 我可以肯定错误在< code > if data[row][0]= =(I f
1、什么是循环语句 一般编程语言都有循环语句,为什么呢? 那就问一下自己,我们弄程序是为了干什么? 那肯定是为了方便我们工作,优化我们的工作效率啊。 而计算机和人类不同,计算机不怕苦也不怕累,也不需要休息,可以一直做。 你要知道,计算机最擅长就是做重复的事情。 所以这时候需要用到循环语句,循环语句允许我们执行一个语句或语句组多次。 循环语句的一般形式如下: 在 Python 提供了 for 循环和