在一个代码行中计算多个产品的TVA税(python)

时间:2016-05-25 11:44:00

标签: python list dictionary tax

我有一个包含产品的dict列表:

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']}] 

并且dict列表包含税:

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])

2 个答案:

答案 0 :(得分:0)

包含税的dict列表只有两个值。您可以使用dict代替list。将您的税收清单重建为使用name作为关键

的税款
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:请再次查看您的清单。 nameqtytax应为'name''qty''tax'

答案 1 :(得分:0)

经过艰苦搜索后,我找到了回复:

sum([item['amount']*tax['amount'] for item in products if 'tva' in item['tax'] for tax in taxes if tax['name']=='tva'])