字典的产品不能重复odoo
Products of a dictionary can not be repeated odoo
我正在拍摄当月销售的所有产品,并将其存储在字典列表中,如下所示:
a = [
{'product_name':'coca-cola','qty':2},
{'product_name':'pepsi','qty':2},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola1','qty':1},
{'product_name':'pepsi','qty':2}
]
现在我正在努力让产品不重复,坦率地说,如果你重复产品,你应该简单地添加离开字典的数量,如下所示:
result =[{'product_name':'coca-cola','qty':4},{'product_id':'pepsi','qty':4},{'product_id':'coca-colca1','qty':1}]
到目前为止,我只尝试了以下操作,但结果不合适:
b = []
for index in range(0,len(a)-1):
if a[index]['product_name'] != a[index + 1 ]['product_name']:
b.append(a[index])
print b
尝试如下操作;
a = [
{'product_name':'coca-cola','qty':2},
{'product_name':'pepsi','qty':2},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola1','qty':1},
{'product_name':'pepsi','qty':2}
]
b = []
for i in range(len(a)):
if a[i]['product_name'] not in b : b.append(a[i]['product_name'])
for j in range(len(b)):
qty = 0
for k in range(len(a)):
if a[k]['product_name'] == b[j] : qty += a[k]['qty']
b[j] = {'product_name':b[j], 'qty':qty}
print(b)
我首先遍历并将唯一的产品名称作为字符串输入到用 b 初始化的列表中。然后我遍历了列表 b 中的每个唯一产品名称,然后总结了列表 a 中与该产品名称关联的数量。最后,我将字符串条目转换为包含现有产品名称和总数量的字典。
输出
b = [
{'product_name': 'coca-cola', 'qty': 4},
{'product_name': 'pepsi', 'qty': 4},
{'product_name': 'coca-cola1', 'qty': 1}
]
我的做法是分两步走:首先求和,然后生成你需要格式的输出。
a = [
{'product_name':'coca-cola','qty':2},
{'product_name':'pepsi','qty':2},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola1','qty':1},
{'product_name':'pepsi','qty':2}
]
totals = {}
for sale in a:
if sale['product_name'] in totals.keys():
totals[sale['product_name']] += sale['qty']
else:
totals[sale['product_name']] = sale['qty']
b = []
for product_name, qty in totals.items():
b.append({'product_name':product_name, 'qty':qty})
我正在拍摄当月销售的所有产品,并将其存储在字典列表中,如下所示:
a = [
{'product_name':'coca-cola','qty':2},
{'product_name':'pepsi','qty':2},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola1','qty':1},
{'product_name':'pepsi','qty':2}
]
现在我正在努力让产品不重复,坦率地说,如果你重复产品,你应该简单地添加离开字典的数量,如下所示:
result =[{'product_name':'coca-cola','qty':4},{'product_id':'pepsi','qty':4},{'product_id':'coca-colca1','qty':1}]
到目前为止,我只尝试了以下操作,但结果不合适:
b = []
for index in range(0,len(a)-1):
if a[index]['product_name'] != a[index + 1 ]['product_name']:
b.append(a[index])
print b
尝试如下操作;
a = [
{'product_name':'coca-cola','qty':2},
{'product_name':'pepsi','qty':2},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola1','qty':1},
{'product_name':'pepsi','qty':2}
]
b = []
for i in range(len(a)):
if a[i]['product_name'] not in b : b.append(a[i]['product_name'])
for j in range(len(b)):
qty = 0
for k in range(len(a)):
if a[k]['product_name'] == b[j] : qty += a[k]['qty']
b[j] = {'product_name':b[j], 'qty':qty}
print(b)
我首先遍历并将唯一的产品名称作为字符串输入到用 b 初始化的列表中。然后我遍历了列表 b 中的每个唯一产品名称,然后总结了列表 a 中与该产品名称关联的数量。最后,我将字符串条目转换为包含现有产品名称和总数量的字典。
输出
b = [
{'product_name': 'coca-cola', 'qty': 4},
{'product_name': 'pepsi', 'qty': 4},
{'product_name': 'coca-cola1', 'qty': 1}
]
我的做法是分两步走:首先求和,然后生成你需要格式的输出。
a = [
{'product_name':'coca-cola','qty':2},
{'product_name':'pepsi','qty':2},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola','qty':1},
{'product_name':'coca-cola1','qty':1},
{'product_name':'pepsi','qty':2}
]
totals = {}
for sale in a:
if sale['product_name'] in totals.keys():
totals[sale['product_name']] += sale['qty']
else:
totals[sale['product_name']] = sale['qty']
b = []
for product_name, qty in totals.items():
b.append({'product_name':product_name, 'qty':qty})