如何在Python字典推导中添加状态打印监控字典创建进度?
字典推导式中添加进度打印的方法
针对你用字典推导式创建超大状态字典时需要查看进度的需求,有几种可行的实现方式:
方法1:用辅助函数跟踪状态
定义一个简单的辅助函数,在返回state的同时执行打印操作(建议加间隔条件避免刷屏):
def track_state(state): # 每10000个状态打印一次进度,可根据需求调整间隔 if state % 10000 == 0: print(f"正在处理状态: {state}") return state num_states = 26565000 num_actions = 7 self.P = { track_state(state): {action: [] for action in range(num_actions)} for state in range(num_states) }
方法2:用逗号表达式直接嵌入打印
不用额外定义函数,利用逗号表达式先执行print,再返回state作为字典的key:
num_states = 26565000 num_actions = 7 self.P = { # 同样添加间隔条件,避免输出过多 (print(f"正在处理状态: {state}") if state % 10000 == 0 else None, state)[1]: {action: [] for action in range(num_actions)} for state in range(num_states) }
额外建议:改用普通循环更直观
虽然字典推导式简洁,但面对26565000这样的超大数据集,普通嵌套for循环的可读性和调试灵活性会更好,你可以直接在循环体内插入打印逻辑:
num_states = 26565000 num_actions = 7 self.P = {} for state in range(num_states): if state % 10000 == 0: print(f"正在处理状态: {state}") self.P[state] = {action: [] for action in range(num_actions)}
内容的提问来源于stack exchange,提问作者Rodolfo
相关产品推荐
相关产品推荐

