使用等值的变量作为字典键会导致覆盖值(Python)

时间:2018-02-01 09:06:23

标签: python dictionary key

我有一个Python字典如下:

Mail_Dict = {
        MailList0 : CodeList0,
        MailList1 : CodeList1,
        MailList2 : CodeList2,
        MailList3 : CodeList3,
        MailList4 : CodeList4
}

问题是当其中一个MailLists的值与另一个MailList相同时(即:MailList0 = 'someone@email.com'MailList1 = 'someone@email.com'),键被视为相等且CodeList0获得被CodeList1覆盖,也使我的字典缩短了。

有没有将这些分开?我认为下面的逻辑相同:

a=1
b=1

保存到单独的内存地址并与以下内容不同:

a=b=1

会在这里适用,但我想情况并非如此=(

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果要在字典中创建同一个键的两个值,一个解决方案是将旧值添加到列表中,并将新值附加到列表中。

Mail_Dict = {
    MailList0 : CodeList0,
    MailList2 : CodeList2,
    MailList3 : CodeList3,
    MailList4 : CodeList4
}

现在,如果要将MailList1(与MailList0具有相同的值)添加到字典中,请检查MailList1是否已经是列表。如果它不是列表,则将其放入列表中,然后附加新值。

if(MailList1 in Mail_Dict):
    if (isinstance(Mail_Dict[MailList1],list)==False):
        Mail_Dict[MailList1] = [Mail_Dict[MailList1]

    Mail_Dict[MailList1].append(codeList1)