从函数参数添加元素到列表

时间:2015-06-24 03:36:23

标签: python python-2.7

定义一个带有3个输入的过程add_to_index: 索引:[[,[,...]],...] 关键字:字符串 值:字符串

如果关键字已在索引中,请将该值添加到与该关键字关联的值列表中。

如果关键字不在索引中,请在索引中添加一个条目:[keyword,[value]]

我写了以下代码:

index = []
def add_to_index(index,keyword,value):
    for entry in index :
        if entry[0] == keyword :
            entry[1].append(value)
        return
    index.append([keyword,[value]])
    return index

并在测试时使用以下内容:

add_to_index(index,'python','python api')
add_to_index(index,'computing','basics of computing')
add_to_index(index,'python','python tutorial')
print index

我的预期输出是:

[['python', ['python api', 'python tutorial']], ['computing', ['basics of computing']]]

但我得到了:

[['python', ['python api', 'python tutorial']]]

我不确定我哪里出错了,请帮忙

1 个答案:

答案 0 :(得分:1)

这种情况发生了,因为您过早地从add_to_index返回。

您的代码只进行一次迭代并从函数返回。您需要缩进return(可能会return index

index = []
def add_to_index(index,keyword,value):
    for entry in index :
        if entry[0] == keyword :
            entry[1].append(value)
            return
    index.append([keyword,[value]])
    return

测试它并且它有效!

In [38]: add_to_index(index,'python','python api')

In [39]: add_to_index(index,'computing','basics of computing')

In [40]: add_to_index(index,'python','python tutorial')

In [41]: print index
[['python', ['python api', 'python tutorial']], ['computing', ['basics of computing']]]