如何将嵌套字典形式的棋盘转换为唯一固定数值?(Minimax算法场景)
优化棋盘状态的存储方案
你的棋盘是嵌套字典结构,完全没必要用手动字符串替换这种繁琐操作,Python内置的json模块就能优雅解决问题——既能快速把棋盘序列化保存到文件,又能轻松读取还原,完美适配你的Minimax算法测试需求。
保存棋盘到文件
用json.dump()直接将字典写入文件,代码简洁且可读性强:
import json rows = { 4:{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0}, 3:{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0}, 2:{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0}, 1:{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0}, } # 保存到JSON文件 with open("board_state.json", "w") as f: json.dump(rows, f, indent=4)
运行后生成的board_state.json是结构化文本,既能直接查看棋盘状态,也方便后续调试。
从文件读取还原棋盘
需要复用棋盘时,用json.load()直接还原成字典,仅需处理JSON默认转成字符串的键:
import json # 读取文件还原棋盘 with open("board_state.json", "r") as f: rows = json.load(f) # 将JSON读取后的字符串键转换为整数(匹配原棋盘的键类型) rows = {int(row_id): {int(col_id): val for col_id, val in cols.items()} for row_id, cols in rows.items()}
相比原方法的优势
- 代码逻辑清晰,避免手动字符串替换这类易出错的操作
- 保存的是结构化数据,后续修改棋盘规则或扩展结构时无需大幅改动代码
- 兼顾可读性和易用性,测试时能快速确认棋盘状态
如果对序列化性能有极高要求,还可以用Python专用的pickle模块(保存二进制文件,速度更快),但对于Minimax测试场景,json的易用性和可读性完全足够。
内容的提问来源于stack exchange,提问作者llamassssssss
相关产品推荐
相关产品推荐

