这个'if'语句是如何使用的?

时间:2013-11-13 17:16:21

标签: python if-statement dictionary boolean

有人可以帮我理解在这段代码中如何使用'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 个答案:

答案 0 :(得分:1)

if key in family:

此处的密钥为elementfamilycontainersequence

您试图找到key

family的存在 如果在if中找到True,则key语句会返回container,否则会返回False

答案 1 :(得分:1)

这些是布尔表达式,因为in是返回TrueFalse的Python关键字,具体取决于左操作数是否包含在右操作数表示的集合中。来自documentation

  

运营商是否参与集合成员资格测试。如果x是集合s的成员,则x in s的计算结果为true,否则为false。 x不在s中返回s中x的否定。集合成员资格测试传统上一直与序列绑定;如果集合是序列并且包含与该对象相等的元素,则对象是集合的成员。但是,许多其他对象类型支持成员资格测试而不是序列是有意义的。特别是,词典(用于键)和集合支持成员资格测试。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

if key in family 意味着

if the container "family" contains "key"

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

的语言

if( family.contains(key) )

任何一个家庭都会包含密钥,或者不包含密钥。所以它是一个布尔表达式