Python脚本提取字典列表type值生成指定格式列表及报错处理
问题解决:提取字典列表中type字段为指定列表格式
错误原因
你尝试直接对列表objects使用字符串索引['type'],但列表仅支持整数索引访问元素,因此触发TypeError: must be str, not list。之前的分行输出是因为你循环打印了每个字典的type值,但未将这些值收集为统一列表。
解决方法
方法1:列表推导式(简洁高效)
objects = [ {'id': '1FoTrNUISRwlGLAQ9kLOeK', 'path': 'Test/m_TEST', 'type': 'TEMPLATE'}, {'id': 'erc6CJiluE2jzCxND2bLM1', 'path': 'Test/M_new', 'type': 'TEMPLATE'}, {'id': 'aqXPJtbQU8ofNxMgfxr7Wk', 'path': 'Test/MCT_Test', 'type': 'MTT'}, {'id': '8UBPdSfpGHLbwuMbvPWPwQ', 'path': 'Test/P1', 'type': 'PROCESS'}, {'id': '3vkmrppWY6WbZW8le0ZTWl', 'path': 'Test', 'type': 'Project'} ] item_type = [obj['type'] for obj in objects] print(item_type)
方法2:循环遍历收集
如果更习惯逐行逻辑,可通过循环逐个提取值并添加到列表:
objects = [ {'id': '1FoTrNUISRwlGLAQ9kLOeK', 'path': 'Test/m_TEST', 'type': 'TEMPLATE'}, {'id': 'erc6CJiluE2jzCxND2bLM1', 'path': 'Test/M_new', 'type': 'TEMPLATE'}, {'id': 'aqXPJtbQU8ofNxMgfxr7Wk', 'path': 'Test/MCT_Test', 'type': 'MTT'}, {'id': '8UBPdSfpGHLbwuMbvPWPwQ', 'path': 'Test/P1', 'type': 'PROCESS'}, {'id': '3vkmrppWY6WbZW8le0ZTWl', 'path': 'Test', 'type': 'Project'} ] item_type = [] for obj in objects: item_type.append(obj['type']) print(item_type)
两种方法运行后都会输出目标格式:
['TEMPLATE', 'TEMPLATE', 'MTT', 'PROCESS', 'Project']
内容的提问来源于stack exchange,提问作者TAN08
相关产品推荐
相关产品推荐

