如何将含整数键的字符串字典转换为Python字典?
解决思路
方法一:用ast.literal_eval(优先选这个)
这是Python标准库专门用来解析Python字面量的工具,完全支持整数键的字典。你之前没成功大概率是字符串有隐性格式问题(比如不可见字符、全角符号),先试试标准写法:
import ast str_data = "{70: True, 956: False, 727: False}" result_dict = ast.literal_eval(str_data) print(result_dict) # 输出:{70: True, 956: False, 727: False}
如果还是报错,先把字符串里的多余空格、换行、制表符清干净,再重新尝试。
方法二:手动解析(ast失效时备用)
要是ast确实用不了,就自己拆分字符串处理,适合格式固定的场景:
str_data = "{70: True, 956: False, 727: False}" # 去掉首尾大括号 clean_str = str_data.strip("{}") # 分割成单个键值对 kv_pairs = clean_str.split(",") result_dict = {} for pair in kv_pairs: # 分割键和值,处理空格 key_part, value_part = pair.split(":") key = int(key_part.strip()) # 把字符串转成布尔值 value = value_part.strip() == "True" result_dict[key] = value print(result_dict)
为啥json.loads用不了?
JSON语法强制要求对象的键必须是双引号包裹的字符串,你的字符串里键是无引号的整数,不符合JSON规范,所以json.loads直接报错,没必要硬用这个方法。
内容的提问来源于stack exchange,提问作者Dugommier
相关产品推荐
相关产品推荐

