在一行代码中计算多种产品的 TVA 税 (python)
Calculate TVA Tax of multiple product in one code line (python)
我有一个包含产品的字典列表:
products = [{'name' : 'art1','amount':2000, 'qty':2, 'tax':['tax_15', 'tva']} ,
{'name' : 'art2','amount':2500, 'qty':3, 'tax':['tax_15', 'timbre']},
{'name' : 'art3','amount':3000, 'qty':4, 'tax':['tva']}]
并且字典列表包含税收:
taxes = [{'name' : 'tax_15','amount':15} ,
{'name' : 'tva','amount':17},
{'name' : 'timbre','amount':10}]
我想计算所有产品的tva,在这个例子中,tva只存在于art1和art3中,在这种情况下:
tva = (2000 * 17%) + (3000 * 17%)
我想在一行 python 代码中计算 tva,我试过这一行:
sum([t['amount']*t['qty']*tax_of_tva_if_exist_in_this_product for t in products])
dict contains taxes 列表只有两个值。您可以使用 dict
而不是 list
。重建您的税收清单以使用 name
作为 key
的税收字典
taxes_dict = {}
for tax in taxes:
taxes_dict[tax['name']] = tax
所以你可以在一行中计算出 tva:
sum([t[amount]*t[qty]*taxes_dict['tva']['amount'] if 'tva' in t['tax'] else 0 for t in products])
P/S:请再次检查您的列表。 name
、qty
和tax
应该是'name'
、'qty'
和'tax'
经过艰苦的搜索,我找到了回应:
sum([item['amount']*tax['amount'] for item in products if 'tva' in item['tax'] for tax in taxes if tax['name']=='tva'])
我有一个包含产品的字典列表:
products = [{'name' : 'art1','amount':2000, 'qty':2, 'tax':['tax_15', 'tva']} ,
{'name' : 'art2','amount':2500, 'qty':3, 'tax':['tax_15', 'timbre']},
{'name' : 'art3','amount':3000, 'qty':4, 'tax':['tva']}]
并且字典列表包含税收:
taxes = [{'name' : 'tax_15','amount':15} ,
{'name' : 'tva','amount':17},
{'name' : 'timbre','amount':10}]
我想计算所有产品的tva,在这个例子中,tva只存在于art1和art3中,在这种情况下:
tva = (2000 * 17%) + (3000 * 17%)
我想在一行 python 代码中计算 tva,我试过这一行:
sum([t['amount']*t['qty']*tax_of_tva_if_exist_in_this_product for t in products])
dict contains taxes 列表只有两个值。您可以使用 dict
而不是 list
。重建您的税收清单以使用 name
作为 key
taxes_dict = {}
for tax in taxes:
taxes_dict[tax['name']] = tax
所以你可以在一行中计算出 tva:
sum([t[amount]*t[qty]*taxes_dict['tva']['amount'] if 'tva' in t['tax'] else 0 for t in products])
P/S:请再次检查您的列表。 name
、qty
和tax
应该是'name'
、'qty'
和'tax'
经过艰苦的搜索,我找到了回应:
sum([item['amount']*tax['amount'] for item in products if 'tva' in item['tax'] for tax in taxes if tax['name']=='tva'])