You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为字典数组添加item_cost字段(item_price与delivery_price的比值)

为字典数组添加新字段的实现方案

问题描述

给定如下字典数组:

[
    {"id_1":1, "id_2":2, "item_price":50, "delivery_price":100},
    {"id_1":1, "id_2":3, "item_price":200, "delivery_price":100},
    {"id_1":1, "id_2":4, "item_price":60, "delivery_price":100}
]

需要为每个字典新增item_cost字段,值为item_price与delivery_price的比值,最终得到:

[
    {"id_1":1, "id_2":2, "item_price":50, "delivery_price":100, "item_cost":0.5},
    {"id_1":1, "id_2":3, "item_price":200, "delivery_price":100, "item_cost":2.0},
    {"id_1":1, "id_2":4, "item_price":60, "delivery_price":100, "item_cost":0.6}
]

方法1:原地修改原数组

直接遍历数组,为每个字典添加新字段,适合不需要保留原数据的场景:

data = [
    {"id_1":1, "id_2":2, "item_price":50, "delivery_price":100},
    {"id_1":1, "id_2":3, "item_price":200, "delivery_price":100},
    {"id_1":1, "id_2":4, "item_price":60, "delivery_price":100}
]

for item in data:
    # 处理除数为0的情况,避免报错
    item["item_cost"] = item["item_price"] / item["delivery_price"] if item["delivery_price"] != 0 else 0

print(data)

方法2:生成新数组(保留原数据)

如果需要保留原数组不被修改,可以生成包含新字段的新字典数组:

original_data = [
    {"id_1":1, "id_2":2, "item_price":50, "delivery_price":100},
    {"id_1":1, "id_2":3, "item_price":200, "delivery_price":100},
    {"id_1":1, "id_2":4, "item_price":60, "delivery_price":100}
]

# 列表推导式简化写法
new_data = [
    {**item, "item_cost": item["item_price"] / item["delivery_price"] if item["delivery_price"] != 0 else 0}
    for item in original_data
]

print(new_data)
# 原数组不受影响
print(original_data)

若使用Python 3.9及以上版本,还可以用|运算符合并字典:

new_data = [
    item | {"item_cost": item["item_price"] / item["delivery_price"] if item["delivery_price"] != 0 else 0}
    for item in original_data
]

注意事项

  • 必须处理delivery_price为0的情况,否则会触发除以0的运行时错误,上述代码中默认将这种情况的item_cost设为0,可根据实际需求调整逻辑。

内容的提问来源于stack exchange,提问作者I_B_O

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 12:51:36