我将值分配到字典中,如下所示:
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。
如何编辑字典对象?
答案 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