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

Python如何实现两个字典同键对应值相乘并输出结果

问题说明

现有两个存储演唱会信息的字典:

AvailConcertSeats = {"The Weeknd": 80000, "Maroon 5": 80000, "Justin Bieber": 80000, "Post Malone": 34000}
AvgConcertPrice = {"The Weeknd": 200, "Maroon 5": 109, "Justin Bieber": 250, "Post Malone": 179}

需求是计算并输出两个字典中同键对应值的乘积,直接运行以下尝试的代码无法得到预期结果,需要正确的实现方案:

AvailConcertSeats.values() * AvgConcertPrice.values()
错误原因

dict.values() 返回的是字典值的视图对象,本身不支持直接和另一个视图对象做乘法运算,直接执行会抛出类型错误;同时这种写法也没有做键的匹配,即使能运算也无法保证是同键的值配对相乘。

实现方案

优先使用键交集遍历的方式,自动适配两个字典键不完全一致的场景,不会出现键不匹配的计算错误:

# 初始化结果字典
total_concert_revenue = {}
# 取两个字典的公共键遍历
for singer in AvailConcertSeats.keys() & AvgConcertPrice.keys():
    total_concert_revenue[singer] = AvailConcertSeats[singer] * AvgConcertPrice[singer]

print(total_concert_revenue)

运行输出结果:

{'The Weeknd': 16000000, 'Maroon 5': 8720000, 'Justin Bieber': 20000000, 'Post Malone': 6086000}

如果偏好简洁写法,可以用字典推导式实现完全相同的逻辑:

total_concert_revenue = {
    singer: AvailConcertSeats[singer] * AvgConcertPrice[singer]
    for singer in AvailConcertSeats.keys() & AvgConcertPrice.keys()
}

注意:如果用zip直接配对两个字典的values()计算,必须保证两个字典的键完全一致、且在Python3.7+版本下键的插入顺序完全相同,否则会出现值错位配对的错误,非特殊场景不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:54:24