字典值被覆盖而不是添加到字典中

时间:2016-07-14 10:09:16

标签: python dictionary

我需要实现的数据结构是:

{
    '179': {
        'name': [ < object > , < object > , < object > ],
        'lastname': [ < object > , object > , < object > ]
    }
}

我有以下代码来实现它:

if g_id in email_data:
    email_data[g_id]['name'] = names
    email_data[g_id]['lastname'] = lastnames
else:
    email_data[g_id] = {'name': names}
    email_data[g_id] = {'lastname': lastnames}
print email_data

但有些我无法实现它。最后一个数据lastname总是追加{'179': {'lastname': [<object>, <object>, <object>]}},但name缺失。伙计们好吗?提前致谢

2 个答案:

答案 0 :(得分:2)

你应该改变:

    else:
        email_data[g_id] = {'name':  names}
        email_data[g_id] = {'lastname':  lastnames}

要:

    else:
        email_data[g_id] = {'name':  names, 'lastname':  lastnames}

否则你会覆盖email_data[g_id]

想一想:

    else:
        a = 1
        a = 2

a的价值是什么?

答案 1 :(得分:1)

else区块中,您应该更新字典重新分配

email_data[g_id] = {'name':  names}
email_data[g_id].update({'lastname':  lastnames})

或者只是一次性分配所有键/值:

email_data[g_id] = {'name': names, 'lastname': lastnames}