编辑字典值

时间:2015-03-08 13:24:22

标签: python dictionary

我将值分配到字典中,如下所示:

contacts = dict()

for company in companies_query:
    contacts[company.id] = dict()

for contact in contacts_query:
    contacts[contact.company_id][contact.id] = contact

所以,例如我现在在联系人字典contacts["15"]["10"]中有这个密钥,假设有一个ID为15的公司和ID为10的联系人。

现在我需要创建另一个for循环来向这些联系人添加其他数据。

for sale in sales_query:
    contact = contacts[sale.company][sale.contact]
    contact.sale_count += 1
    contacts[sale.company][sale.contact] = contact

这不起作用。对于第二行,它表示KeyError的值为<Contact: Contact object>sale.company在此示例中为15,sale.contact为10。

如何编辑字典对象?

1 个答案:

答案 0 :(得分:1)

您传入的是整个Contact()实例对象,而不是该对象的 id属性值。您可能打算使用:

for sale in sales_query:
    contact = contacts[sale.company][sale.contact.id]

e.g。使用sale.contact.id属性而不是直接使用sale.contact

由于您直接操作Contact()实例,因此您不需要分配回嵌套字典;以下3行就足够了:

for sale in sales_query:
    contact = contacts[sale.company][sale.contact.id]
    contact.sale_count += 1

请注意,使用dict()创建一个空字典并不常见或惯用。请改用{}文字符号:

contacts = {}

for company in companies_query:
    contacts[company.id] = {}

for contact in contacts_query:
    contacts[contact.company_id][contact.id] = contact

您也可以使用词典理解构建contacts映射:

contacts = {company.id for company in companies_query}

for contact in contacts_query:
    contacts[contact.company_id][contact.id] = contact