Python中JSON序列化反序列化后如何将字典键转为整数?
将JSON读取后的字符串键转为整数的简便方法
方法一:字典推导式(最直接)
加载字典后,用字典推导式遍历所有键值对,将字符串键转为整数:
# 先修正文件打开的错误写法 fi = open("test.json", "r") g = json.load(fi) fi.close() # 转换键为整数类型 g = {int(k): v for k, v in g.items()}
方法二:加载时用object_hook处理(一步到位)
可以在json.load时指定object_hook参数,直接在加载过程中转换键类型,省去后续处理步骤:
def convert_keys_to_int(obj): # 仅处理字典类型,避免影响列表等其他数据结构 if isinstance(obj, dict): return {int(k): v for k, v in obj.items()} return obj fi = open("test.json", "r") g = json.load(fi, object_hook=convert_keys_to_int) fi.close()
补充说明
- JSON格式本身不支持整数作为键,所有非字符串键在序列化时都会被转为字符串,因此反序列化后需要手动转换回原类型。
- 若存在无法转为整数的键,上述代码会抛出
ValueError,可根据实际需求添加异常处理逻辑。
内容的提问来源于stack exchange,提问作者The Dare Guy
相关产品推荐
相关产品推荐

