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

Python如何实现两个嵌套列表对应第二个元素的减法运算

保险费用差值计算实现方案

前置说明

Python 变量名不允许包含空格,首先需要修正你的变量命名才能正常运行:

insurance_cost = [('Maria', 4150.0), ('Rohan', 5320.0), ('Valentina', 35210.0)]
estimated_insurance_cost = [('Maria', 4222.0), ('Rohan', 5442.0), ('Valentina', 36368.0)]

实现方法

方法1:基础遍历法(适合新手理解)

如果两个列表的人名顺序完全对应,可以用zip()函数同时遍历两个列表,直接提取对应元组的第二个元素做差:

diff_result = []
# zip会自动配对两个列表相同位置的元素
for actual_item, estimate_item in zip(insurance_cost, estimated_insurance_cost):
    # 可选校验:确认人名匹配,避免顺序错位导致计算错误
    if actual_item[0] == estimate_item[0]:
        diff = estimate_item[1] - actual_item[1]
        diff_result.append( (actual_item[0], diff) )

print(diff_result)
# 输出结果:[('Maria', 72.0), ('Rohan', 122.0), ('Valentina', 1158.0)]

方法2:列表推导式(简洁写法)

熟悉基础语法后可以用一行代码完成计算:

diff_result = [ (a[0], b[1]-a[1]) for a,b in zip(insurance_cost, estimated_insurance_cost) if a[0]==b[0] ]

方法3:字典转换法(不依赖列表顺序)

如果无法保证两个列表的人名顺序一致,可以先转成字典再计算,更稳妥:

# 把列表转成{人名:费用}的字典
actual_dict = dict(insurance_cost)
estimate_dict = dict(estimated_insurance_cost)

# 按人名匹配计算差值
diff_dict = {name: estimate_dict[name] - actual_dict[name] for name in actual_dict}
# 如需转回列表格式,用diff_result = list(diff_dict.items())

疑问解答

  • 不需要转换为int类型:你提供的费用值都是float类型,Python原生支持float直接做减法运算,如果后续需要整数结果,可以用int(差值)对结果做强制转换即可。
  • 不需要手动unzip:zip()函数已经自动完成了对应元素的配对,直接遍历就能拿到两组对应数据,操作更简单。

内容的提问来源于stack exchange,提问作者Prabhjoat Singh Riyat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:27:04