【发布时间】:2020-09-17 15:43:32
【问题描述】:
我有一个具有以下结构的字典列表:
{
"acquirer_id": 1,
"acquirer_name": "CIELO",
"client_id": 15520,
"created_at": "2020-09-03T17:39:52.233566",
"fee_amount": 0, # Needs to be added
"net_amount": 0, # Needs to be added
"quantity": 0, # Needs to be added
"sales_amount": 0, # Needs to be added
"sales_average": 0, # Needs to be added
"sales_date": "2020-08-13"
}
我见过Sum list of dictionaries with same key,但问题是我没有只有整数。我试图将 dicts 过滤字符串和数字分开,例如:
separated_dicts = [({key: value for (key, value) in _dict.items() if isinstance(value, str)}, {
key: value for (key, value) in _dict.items() if isinstance(value, numbers.Number)}) for _dict in sales]
为了仅将一个与数字相加并稍后合并,但是,我无法将 acquirer_id 和 client_id 相加 因为它们是 ids。所以,我必须将字典列表减少为单个字典,添加每个字典的特定值。这样做最pythonic的方式是什么?
【问题讨论】:
-
client_id怎么样?因为它也是一个 id,所以不应该排除它吗? -
是的,我刚刚提到了acquireer_id作为例子
-
是的,它必须是 numbers.Number 的实例,因为那里也有一些浮点数。
-
试试
sum(v for k, v in d.items() if (not "id" in k) and isinstance(v, (int, float)))? -
您想对每个字典中的所有数字求和,还是希望得到另一个字典,其中所有键都包含所有其他字典中这些键的总和?
标签: python dictionary