Django Rest/对相同硬币的响应值求和

2024-05-23 17:34:06 发布

您现在位置:Python中文网/ 问答频道 /正文

从api中,我可以在一枚硬币上获得多条记录

如何将它们汇总并正确添加到Wallet.objects()中?现在我有了这样一个代码,它只是用零硬币覆盖了旧的值

例如,我有回应

{"coin":"BIP","value":"5"}
{"coin":"ZERO","value":"4"}
{"coin":"BIP","value":"15"}
{"coin":"INSIDER","value":"24"}
{"coin":"BIP","value":"41"}

我需要此响应中的外接程序数据库:

"coin":"BIP","value":"61"
"coin":"ZERO","value":"4"
"coin":"INSIDER","value":"24"

其总和均为BIP(5+15+41)。和其他硬币。 怎么做

我的钱包.objects现在无法计算这个金额

obj, created = Wallet.objects.update_or_create(user=user, coin_id_id=coin.id, defaults={'amount_d': amount_d, 'amount_w': 0, 'cap_w': 0, 'cap_d': capitalize_d},)
    obj.save()

请帮忙。塔汉克斯


Tags: apiidobjobjectsvalue记录硬币amount
1条回答
网友
1楼 · 发布于 2024-05-23 17:34:06
coins = [
    {'coin': "A", 'value': 2},
    {'coin': "B", 'value': 5},
    {'coin': "A", 'value': 1},
    {'coin': "A", 'value': 3},
]

new = {}
for c in coins:
    coin_name = c.get("coin")
    coin_value = c.get("value", 0)

    new[coin_name] = new.get(coin_name, 0) + coin_value

coin = []
for key in new:
    coin.append({'coin': key, 'value': new[key]})

print(coin)

结果:

[{'coin': 'A', 'value': 6}, {'coin': 'B', 'value': 5}]

编辑:(bip_增值)

coins = [
    {'coin': "A", 'value': 2, 'bip_value': 1},
    {'coin': "B", 'value': 5, 'bip_value': 2},
    {'coin': "A", 'value': 1, 'bip_value': 3},
    {'coin': "A", 'value': 3, 'bip_value': 4},
]

new = {
    'coin': {},
    'bip': {}
}

for c in coins:
    coin_name = c.get("coin")
    coin_value = c.get("value", 0)
    bip_value = c.get("bip_value", 0)

    new['coin'][coin_name] = new['coin'].get(coin_name, 0) + coin_value
    new['bip'][coin_name] = new['bip'].get(coin_name, 0) + bip_value

coin = []
for key in new['coin']:
    coin.append({'coin': key, 'value': new['coin'][key], 'bip_value': new['bip'][key]})

print(coin)

结果:

[{'coin': 'A', 'value': 6, 'bip_value': 8}, {'coin': 'B', 'value': 5, 'bip_value': 2}]

相关问题 更多 >