使用dict comprehension对字典值列表求和出现TypeError的问题
字典推导式错误修复
错误原因
- 你写的推导式多了不必要的第二层循环
for n in n_dict[n_key],这层循环会逐个取出列表里的整数赋值给n - 调用
sum(n)时,n是单个整数,而sum()要求传入可迭代对象,因此触发TypeError: 'int' object is not iterable报错 - 即使不存在类型错误,这种双层循环的写法也会导致键重复覆盖,最终输出结果不符合预期
正确实现
直接对每个键对应的完整列表求和即可,不需要额外遍历列表元素:
n_dict = {4: [4,1,6], 3: [5,3,9], 2: [8,2,10]} n_sum = {n_key: sum(n_val) for n_key, n_val in n_dict.items()} print(n_sum) # 输出结果:{4: 11, 3: 17, 2: 20}
如果习惯通过键取值的写法,也可以用如下实现:
n_sum = {n_key: sum(n_dict[n_key]) for n_key in n_dict.keys()}
内容的提问来源于stack exchange,提问作者jovianlynxdroid
相关产品推荐
相关产品推荐

