我的代码出错,返回错误的结果

时间:2013-12-01 17:14:44

标签: python list dictionary

def test_code(message):
    msg_list = message.split(',')
    for item in msg_list:
        empty_dict = {}
        if item.find('=') != -1:
            split_str = [char.strip("'") for char in msg_list[
                msg_list.index(item)].split('=')]
            if split_str[1].find('.') != -1:
                empty_dict.update({'test': [1, 2]})
            else:
                empty_dict.update({'test': [3, 4]})
        elif item.find('>') != -1:
            split_str = [char.strip("'") for char in msg_list[
                msg_list.index(item)].split('>')]
            if split_str[1].find('.') != -1:
                empty_dict.update({'test': [5, 6]})
            else:
                empty_dict.update({'test': [7, 8]})
        return empty_dict  

那么我的代码就是这样做的:

它采用字符串作为输入格式:a.name = o.name,a.year> o.year 它将它拆分为逗号并给出: [ 'a.name = o.name', 'a.year> o.year'] 现在它遍历列表中的每个项目,如果它在项目中找到'='字符 它将项目拆分为'='字符并给出: ['a.name','o.name'] 现在,如果第1个索引有一个'。'在它(在这种情况下是o.name),它用{'test'更新空列表:[1,2]} 如果它没有。而不是用{'test':[3,4]}

更新字典

现在empty_dict = {'test':[1,2]}

现在转到列表中的下一个项目'a.year> o.year',如果它找到了 '>'列表中的字符然后将其拆分为&gt ;.我们得到:

['a.year','o.year']

如果索引1处的元素具有'。'它使用{'test':[5,6]}更新列表,否则更新为{'test:[7,8]}

现在,当我在此处运行我的代码时:

>> test_code("a.name=o.name,a.year>o.year")
{'test': [1, 2]}

它应该给出的不正确,{'test':[5,6]}

我做错了什么?

2 个答案:

答案 0 :(得分:3)

你的return有太多缩进。您在for循环的第一次迭代后返回。

答案 1 :(得分:1)

return应与def的缩进相同,否则您将返回每item

的值