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']。
答案 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
次返回来为您节省检查密钥是否存在的麻烦等。