Python新手求助:嵌套字典'y'值求和报错'int不可迭代'
解决代码中'y'值求和的问题
错误原因
你遇到的TypeError: 'int' object is not iterable是因为sum()函数要求传入可迭代对象(比如列表、生成器),但你在循环里直接把单个整数(inventory[key]['y']的值是2、5这类整数)传给了sum(),自然会触发错误。
修正方案
方法1:初始化累加变量遍历求和
inventory = { 'x' : {'x': 1, 'y': 2, 'z': 3}, 'y' : {'x': 4, 'y': 5, 'z': 6} } total_y = 0 # 遍历字典里的所有子字典 for sub_dict in inventory.values(): total_y += sub_dict['y'] print(total_y) # 输出结果:7
方法2:用生成器表达式简化代码
inventory = { 'x' : {'x': 1, 'y': 2, 'z': 3}, 'y' : {'x': 4, 'y': 5, 'z': 6} } # 生成器表达式取出所有'y'值,直接传给sum求和 total_y = sum(sub_dict['y'] for sub_dict in inventory.values()) print(total_y) # 输出结果:7
说明
两种方法核心逻辑一致:先拿到inventory里的所有子字典,逐个取出每个子字典中'y'对应的整数值,再把这些值累加起来。区别只是写法简洁度,你可以根据自己的理解选择使用。
内容的提问来源于stack exchange,提问作者LowTowerR RL
相关产品推荐
相关产品推荐

