Python字典中对匹配正则的键对应值求和出现类型错误如何解决
报错原因
你遇到的unsupported operand type(s) for +: 'int' and 'dict_values'报错,是因为错误地将整个字典的dict_values对象直接传入求和逻辑,没有将符合正则匹配规则的键和它对应的取值做关联。
正确实现代码
两种常用的实现方式都可以达到累加匹配键对应取值的效果:
- 沿用原有遍历键的逻辑,直接取匹配键对应的value参与求和:
sum(mydict[key] for key in mydict.keys() if re.match(r'^D\d{2}$', key))
- 直接遍历字典的键值对,键匹配时返回对应value参与求和:
sum(value for key, value in mydict.items() if re.match(r'^D\d{2}$', key))
补充说明
- 正则表达式前添加
r前缀是Python正则的最佳实践,可以避免转义字符被提前解析产生冲突。 - 如果匹配到的键对应的value可能存在非数值类型(如字符串、嵌套字典等),需要额外添加类型校验逻辑,避免出现新的类型错误。
内容的提问来源于stack exchange,提问作者kitchen800
相关产品推荐
相关产品推荐

