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

Python中遍历字典值时,如何检查变量类型并累加数值类型值

解决Python字典中数值类型值的累加问题

原代码直接遍历字典值进行累加会触发TypeError,因为字典中包含None、字符串这类无法与整数相加的类型。要实现仅累加数值类型的值,有以下几种可行方案:

方案一:类型判断过滤

使用isinstance()明确检查值是否为整数或浮点数,符合条件再累加:

total = 0 
grades = {
    'Math': 90,
    'Science': None,
    'English': 85,
    'History': 'A',
    'Art': 88
}

for grade in grades.values():
    if isinstance(grade, (int, float)):
        total += grade

print(total)  # 输出:263

isinstance(grade, (int, float))会同时匹配整数和浮点数类型,自动过滤掉非数值类型的元素。

方案二:异常捕获跳过

如果不确定值的类型范围,可以用try-except捕获累加时的异常,跳过无法累加的元素:

total = 0 
grades = {
    'Math': 90,
    'Science': None,
    'English': 85,
    'History': 'A',
    'Art': 88
}

for grade in grades.values():
    try:
        total += grade
    except (TypeError, ValueError):
        continue

print(total)  # 输出:263

这种方式不需要提前定义类型,尝试累加操作,失败则跳过当前元素,适合值类型复杂的场景。

方案三:覆盖所有数值类型(含扩展类型)

如果需要支持更多数值类型(比如复数、numpy数值类型),可以导入numbers模块,用numbers.Number作为判断依据:

import numbers

total = 0 
grades = {
    'Math': 90,
    'Science': None,
    'English': 85,
    'History': 'A',
    'Art': 88
}

for grade in grades.values():
    if isinstance(grade, numbers.Number):
        total += grade

这个判断会覆盖所有Python标准数值类型,兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:37:15