如何将字典中类列表格式的字符串键转换为列表并提取数据?
解决方法
你可以用两种简单方式将字符串格式的坐标转换成可直接访问的列表:
方法1:使用ast.literal_eval(推荐,安全可靠)
这是最稳妥的方式,它能安全解析字符串形式的列表、字典等结构,自动处理空格问题:
import ast testlist = {'[0, 0]': 0, '[1 ,1]': 1} for tmp in testlist: if testlist[tmp] == 1: coord = ast.literal_eval(tmp) print(coord[0], coord[1])
运行后会输出1 1,完全符合预期。
方法2:手动处理字符串
如果不想导入模块,可以手动去除括号、分割字符串并转换类型:
testlist = {'[0, 0]': 0, '[1 ,1]': 1} for tmp in testlist: if testlist[tmp] == 1: # 移除首尾方括号,按逗号分割后清理空格并转整数 coord = [int(num.strip()) for num in tmp.strip('[]').split(',')] print(coord[0], coord[1])
为什么原来的方法失效?
你之前直接访问tmp[0]是在操作字符串的索引,比如键"[1 ,1]"是字符串,tmp[0]取的是第一个字符[,tmp[1]取的是空格后的1,所以输出错误。list(tmp)会把字符串拆成单个字符的列表(比如['[', '1', ' ', ',', ' ', '1', ']']),tmp.split()默认按空格分割会得到['[1', ',1]'],都没法直接提取坐标数字。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

