如何在Python中添加对象和字典值,Odoo?

时间:2018-02-09 14:09:51

标签: python odoo odoo-10

    active_route_ids = self.env['route.data'].browse(active_ids)

    customer_contacts_group = {}

    for record in active_route_ids:
        for control in record.cust_control_pts:
            key_id = str(control.res_partner.id)

            if key_id not in customer_contacts_group:
                customer_contacts_group[key_id] = record
            else:
                customer_contacts_group[key_id].add(record)

假设我们有这样的词典:

  customer_contacts_group = {'1': (20,)}

我想这样做:

  customer_contacts_group = {'1': (20,30,40,)}

逐个将值附加到customer_contacts_group ['1']。

4 个答案:

答案 0 :(得分:1)

您正在处理可以连接的元组:

customer_contacts_group[key_id] = customer_contacts_group[key_id] + record

或简称:

customer_contacts_group[key_id] += record

答案 1 :(得分:1)

您可以将两个元组连接在一起以获得结果。需要注意的一点是,元组在Python中是不可变的,但是,您可以将两个不可变元组连接的结果分配给包含初始元组的变量,就像您想要在这里做的那样。

customer_contacts_group['1'] += (4,5,6)

输出:

{'1': (20, 4, 5, 6)}

答案 2 :(得分:0)

您可以使用dictionary[key]访问字典值,但您似乎存储的不是列表而是元组。元组是不可变的,因此您无法将值附加到它们。但是,您可以通过连接构造一个新元组,例如

customer_contacts_group = {'1': (20,)}
customer_contacts_group['1'] = customer_contacts_group['1'] + (30,)

x['1']现在是(20,30)。只要添加的两个参数都是元组,就会发生连接。

答案 3 :(得分:-1)

您无法附加到(20,30,40,)之类的元组。但是对于像[20, 30, 40]这样的列表。

你要做的就是defaultdict(list)这样的话:

from collections import defaultdict
groups = defaultdict(list)
for key, record in [(1, 1), (1, 2), (2, 100), (2, 200)]:
    groups[key].append(record)

defaultdict(some_callable)通过默认为some_callable次返回来为您节省检查密钥是否存在的麻烦等。