Python如何从列表中选取键值对元素并按键获取对应值
解决方案
原生Python列表仅支持整数位置索引,直接执行l['person']会抛出TypeError: list indices must be integers or slices, not str错误。你当前列表中存储的是字符串格式的键值片段,需要先转换为字典结构,才能实现按键名取值的效果。
实现代码
# 原始输入列表 l = ["'person': 'Male'", "'name': 'James Smith'", "'dob': 'Jul 20 1955'", "'car': 'Ford'"] # 转换为字典结构,直接覆盖原变量 l = { item.split(":", 1)[0].strip().strip("'"): item.split(":", 1)[1].strip().strip("'") for item in l } # 执行预期调用 print(l['person'])
运行后控制台输出:
Male
实现逻辑
- 遍历原始列表的每一个字符串元素
- 调用
split(":", 1)按第一个冒号拆分键和值,传入maxsplit参数1是为了避免值内容本身包含冒号时拆分异常 - 对拆分出的键、值分别去除首尾空白字符,以及外层包裹的单引号
- 组装为标准字典后,即可支持传入字符串键名直接取值
如果后续需要处理的键值对格式更复杂(比如值内含转义字符、嵌套结构),可以将每个字符串补全为合法JSON格式后用json.loads()方法解析,适配性更强。
内容的提问来源于stack exchange,提问作者ASH
相关产品推荐
相关产品推荐

