我的代码是
class Supplier:
def supplier_name(self, sup_name):
return sup_name
class Product(Supplier):
def purchase(self, date, p_name, qty):
p_list = [date, p_name, qty]
return p_list
x = s.supplier_name("A")
pr_name = "product B"
unit_row = p.purchase("2018-12-12", pr_name, 20)
c.get_data(unit_row, x)
x = s.supplier_name("A")
pr_name = "product A"
unit_row = p.purchase("2019-10-10", pr_name, 5)
c.get_data(unit_row, x)
x = s.supplier_name("B")
pr_name = "product A"
unit_row = p.purchase("2018-11-15", pr_name, 7)
c.get_data(unit_row, x)
x = s.supplier_name("B")
pr_name = "product B"
unit_row = p.purchase("2018-11-16", pr_name, 9)
c.get_data(unit_row, x)
x = s.supplier_name("B")
pr_name = "product C"
unit_row = p.purchase("2018-12-15", pr_name, 10)
c.get_data(unit_row, x)
x = s.supplier_name("C")
pr_name = "product A"
unit_row = p.purchase("2018-06-10", pr_name, 20)
c.get_data(unit_row, x)
x = s.supplier_name("C")
pr_name = "product B"
unit_row = p.purchase("2018-07-10", pr_name, 30)
c.get_data(unit_row, x)
x = s.supplier_name("C")
pr_name = "product A"
unit_row = p.purchase("2018-06-10", pr_name, 40)
c.get_data(unit_row, x)
c.display()
我有多维列表。执行后,我得到这样的输出。
[['2019-10-10', 'product A', 10], 'A']
[['2019-10-10', 'product A', 5], 'A']
[['2018-12-15', 'product C', 10], 'B']
[['2018-12-12', 'product B', 20], 'A']
[['2018-11-16', 'product B', 9], 'B']
[['2018-11-15', 'product A', 7], 'B']
[['2018-07-10', 'product B', 30], 'C']
[['2018-06-10', 'product A', 20], 'C']
[['2018-06-10', 'product A', 40], 'C']
这里'A''B''C'是我的供应商, “产品A”,“产品B”和“产品C”是我的产品名称。 和数字是我的数量(例如10,5,10,20,9,7,30,20,40)
我想在同一日期与同一数量的供应商添加。 (例如10 + 5)在“ A”供应商中 另一个在“ C”供应商中的数量为20 + 40,并按如下所示逐一列出。预期输出。
[['2019-10-10', 'product A', 15], 'A']
[['2018-12-12', 'product B', 20], 'A']
[['2018-12-15', 'product C', 10], 'B']
[['2018-11-16', 'product B', 9], 'B']
[['2018-11-15', 'product A', 7], 'B']
[['2018-07-10', 'product B', 30], 'C']
[['2018-06-10', 'product A', 60], 'C']
答案 0 :(得分:0)
您可以使用defaultdict
:
from collections import defaultdict
l = [[['2019-10-10', 'product A', 10], 'A'],
[['2019-10-10', 'product A', 5], 'A'],
[['2018-12-15', 'product C', 10], 'B'],
[['2018-12-12', 'product B', 20], 'A'],
[['2018-11-16', 'product B', 9], 'B'],
[['2018-11-15', 'product A', 7], 'B'],
[['2018-07-10', 'product B', 30], 'C'],
[['2018-06-10', 'product A', 20], 'C'],
[['2018-06-10', 'product A', 40], 'C']]
d = defaultdict(int)
for i in l:
d[(*i[0][:2], i[1])] += i[0][2]
for k, v in d.items():
print([[*k[:2], v], k[-1]])
输出:
[['2019-10-10', 'product A', 15], 'A']
[['2018-12-15', 'product C', 10], 'B']
[['2018-12-12', 'product B', 20], 'A']
[['2018-11-16', 'product B', 9], 'B']
[['2018-11-15', 'product A', 7], 'B']
[['2018-07-10', 'product B', 30], 'C']
[['2018-06-10', 'product A', 60], 'C']