无法理解python输出

时间:2017-09-03 01:42:11

标签: python if-statement

为什么第二个打印查找方法返回空白而不是链接acm.org?第一个结果是有道理的,但第二个结果不应该相似吗?

# Define a procedure, lookup,
# that takes two inputs:

# - an index
# - keyword

# The procedure should return a list
# of the urls associated
# with the keyword. If the keyword
# is not in the index, the procedure
# should return an empty list.


index = [['udacity', ['http://udacity.com', 'http://npr.org']],
         ['computing', ['http://acm.org']]]

def lookup(index,keyword):
    for p in index:
        if p[0] == keyword:
            return p[1]
        return []     



print lookup(index,'udacity')
#>>> ['http://udacity.com','http://npr.org']

print lookup(index,'computing')

Results:

['http://udacity.com', 'http://npr.org']
[]

2 个答案:

答案 0 :(得分:0)

你的缩进有一个错字。如果第一个条目不匹配,您将返回[]。它应该是:

def lookup(index,keyword):
    for p in index:
        if p[0] == keyword:
            return p[1]
    return []  

答案 1 :(得分:0)

我强烈建议在这种情况下使用字典。

就像那样:

index = {'udacity': ['http://udacity.com', 'http://npr.org'],
         'computing': ['http://acm.org']}

def lookup(index, keyword):
    return index[keyword] if keyword in index else []

这更快更清楚。当然,你有更多的灵活处理dict的可能性,而不是[['字符串列表'和[字符串列表]]列表]。