【发布时间】:2021-05-30 07:54:48
【问题描述】:
我有以下字典:
res = [{'name': 'mfi', 'percentage': 100.0, 'tax_base': 1000.0, 'tax_amount': 140.0},
{'name': 'serv', 'percentage': 100.0, 'tax_base': 1000.0, 'tax_amount': 140.0},
{'name': 'inv', 'percentage': 100.0, 'tax_base': 1200.0, 'tax_amount': 168.0},
{'name': 'mfi', 'percentage': 50.0, 'tax_base': 1500.0, 'tax_amount': 210.0},
{'name': 'none', 'percentage': 0.0, 'tax_base': 1000.0, 'tax_amount': 0.0},
{'name': 'none', 'percentage': 0.0, 'tax_base': 900.0, 'tax_amount': 126.0},
{'name': 'mfi', 'percentage': 50.0, 'tax_base': 1000.0, 'tax_amount': 140.0}]
从这本字典中,我需要对 'tax_base' 和 'tax_amount' 值键求和,并使用键 'name' 和 'percentage' 作为索引。
因此,我需要:
res_final = [{'name': 'mfi', 'percentage': 100.0, 'tax_base': 1000.0, 'tax_amount': 140.0},
{'name': 'mfi', 'percentage': 50.0, 'tax_base': 2500.0, 'tax_amount': 350.0},
{'name': 'serv', 'percentage': 100.0, 'tax_base': 1000.0, 'tax_amount': 140.0},
{'name': 'inv', 'percentage': 100.0, 'tax_base': 1200.0, 'tax_amount': 168.0},
{'name': 'none', 'percentage': 0.0, 'tax_base': 1900.0, 'tax_amount': 126.0},
]
我怎样才能做到这一点?可以给我一个样品吗?
【问题讨论】:
-
遍历字典,并使用键
name和percentage(可以是元组)创建一个新字典,并使用tax_base和tax_amount的值创建一个字典,如果它们的条目存在,则添加值。然后就像最后一样,您可以再次遍历字典以将其返回到您想要的形式。上面是一个例子,我想还有更多(可能还有更好的)方法。 -
我看这个有点长,你也可以把它设为pd.DataFrame 并使用groupby 聚合函数。有关示例,请参见 docs。
-
@Thymen,你能给我发一份第一种方法的样本吗?
标签: python-3.x list dictionary indexing key