0

有人可以帮我理解在这段代码中是如何使用“if”语句的吗?这是 LearnStreet 系列 Python 课程中的一个练习:http: //www.learnstreet.com/lessons/study/python#get-hint

我认为“if”语句需要一个布尔条件:如果 X < Y,则执行 Z。但我不明白布尔值如何成为这些“if”语句的一部分。

def run():
     smiths = {"father": "Mike", "ex-wife" : "Mary", "children" : ["Bobby", "Susan"] }
     jones = {"mother": "Lucy", "ex-husband": "Peter", "children": ["Michelle", "Jeff", "Evan"]}
     family = {}
     for key in smiths:
         if key in family:
             family[key]+=smiths[key]
         else:
             family[key]=smiths[key]
     for key in jones:
         if key in family:
             family[key]+=jones[key]
         else:
             family[key]=jones[key]
     keysToDel = []
     for key in family:
         if 'ex' in key:
             keysToDel.append(key)
     print keysToDel
     for key in keysToDel:
         del family[key]
     return family
4

4 回答 4

1

if key in family:

这里的键是 anelement而 thefamilycontainerorsequence

而你正试图keyfamily

如果在中找到,则此if语句返回,否则返回TruekeycontainerFalse

于 2013-11-13T17:18:13.057 回答
1

这些是布尔表达式,inPython 关键字返回TrueFalse取决于左操作数是否包含在由右操作数表示的集合中。从文档中:

运算符 in 和 not in 测试集合成员资格。如果 x 是集合 s 的成员,则 x in s 评估为 true,否则为 false。x not in s 返回 x in s 的否定。集合成员资格测试传统上与序列绑定。如果集合是一个序列并且包含与该对象相等的元素,则该对象是该集合的成员。但是,对于许多其他对象类型来说,支持成员资格测试而不是序列是有意义的。特别是,字典(用于键)和集合支持成员资格测试。

于 2013-11-13T17:22:55.213 回答
0

它们是布尔条件。布尔条件不必看起来像“如果 X < Y”,这只是一个示例。布尔条件只是评估为真或假的任何东西。如果“key”的值在列表“family”中,则“key in family”的计算结果为 true,否则为 false。

于 2013-11-13T17:20:02.060 回答
0

if key in family 方法

if the container "family" contains "key"

在类 C 语言中,它可以写成

if( family.contains(key) )

要么家庭将包含密钥,要么不会。所以这是一个布尔表达式

于 2013-11-13T17:20:10.420 回答