Python字典日期键转换时执行pop操作报错求助
问题解决:字典日期键格式转换报错修复
错误原因
你直接遍历原字典的键并修改字典结构,导致循环过程中字典的键集合动态变化。当新生成的%d%m%y格式键(比如030323)被加入字典后,循环会把这些新键也当成待处理对象,而这类键无法用%d%b%y格式解析,因此抛出ValueError。
修复代码
先把原字典的键转换成静态列表,再遍历这个列表处理,避免遍历过程中字典结构变化干扰循环:
import datetime price={'10MAR23': 113.49999999999999, '3MAR23': 19.10000000000001, '25FEB23': 19.100000000000012, '28APR23': 3.5, '26FEB23': 0.4, '31MAR23': 27.5, '17MAR23': 3.1} # 先获取原字典所有键的静态列表 original_keys = list(price.keys()) for i in original_keys: new_key = datetime.datetime.strptime(i, '%d%b%y').strftime('%d%m%y') price[new_key] = price.pop(i) print(price)
代码说明
list(price.keys()):将原字典的键转换成静态列表,确保遍历的是初始状态下的所有旧键,不会受后续字典修改的影响。- 遍历静态列表处理每个旧键,解析成日期对象后再格式化为目标字符串,最后用
pop移除旧键并添加新键到字典中。
内容的提问来源于stack exchange,提问作者Madan
相关产品推荐
相关产品推荐

