Python匹配字典条目时报TypeError: 'int' object is not iterable如何解决
报错原因
- 你代码中的
results是x*y计算得到的整数,for i in results试图遍历整数对象,属于非法操作,直接触发了TypeError: 'int' object is not iterable报错。 - 你的需求本身不需要循环:你要求用有序的
(x,y)元组匹配字典键,不需要额外遍历任何对象。
修正后代码
scoremapDict = {(1, 1): 1, (1, 2): 2, (2, 1): 2, (1, 3): 3, (3, 1): 3, (1, 4): 4, (4, 1): 4, (2, 2): 4, (1, 5): 5, (5, 1): 5, (4, 2): 8, (2, 4): 8, (2, 3): 6, (3, 2):6, (3, 3): 9, (2, 5): 10, (5, 2):10, (3, 4): 12, (4, 3):12, (3, 5): 15, (5, 3): 15, (4, 4): 16, (4, 5): 20, (5, 4): 20, (5, 5): 25} x = 5 y = 2 # 直接判断有序元组是否存在于字典键中 if (x, y) in scoremapDict: score = scoremapDict[(x,y)] print(f"High,对应评分为:{score}") else: print("None")
逻辑说明
- 字典的键本身就是有序元组,天然满足
x、y的顺序需严格和字典键的元组顺序保持一致的需求,不需要额外对比乘积 - 直接用
(x,y) in 字典判断键是否存在,时间复杂度为O(1),比遍历操作效率更高
内容的提问来源于stack exchange,提问作者henoker
相关产品推荐
相关产品推荐

